[JAVA] [Android] Affichage des candidats d'entrée à l'aide de la fenêtre contextuelle Liste

0. Exemple d'exécution

スクリーンショット 2019-03-27 19.13.33.png

1. Code entier

MainActivity.java


package com.example.listpopupwindowtest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListPopupWindow;

public class MainActivity extends AppCompatActivity {

    String[] strList = {"AIUEO","Kakikukeko","SA Shi Su Se So"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final EditText et_1 = (EditText)findViewById(R.id.et_1);
        final ListPopupWindow lpw = new ListPopupWindow(this);
        lpw.setAdapter(new ArrayAdapter<String>(
                this,android.R.layout.simple_list_item_1,strList));
        lpw.setAnchorView(et_1);
        lpw.setModal(true);
        et_1.setOnTouchListener(new View.OnTouchListener() {
            final int DRAWABLE_RIGHT = 2;
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if(event.getAction()==MotionEvent.ACTION_UP){
                    if(event.getX()>=v.getWidth()-((EditText) v)
                            .getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width()){
                        lpw.show();
                        ((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE))
                                .hideSoftInputFromWindow(v.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS);
                        return true;
                    }
                }
                return false;
            }
        });
        lpw.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                et_1.setText(strList[position]);
                lpw.dismiss();
            }
        });
    }
}

2. Ajoutez une marque ▼ à l'extrémité droite du champ de saisie

Téléchargez le fichier de ressources ci-dessous et copiez core / res / res / drawable-hdpi / numberpicker_down_normal_holo_light.png dans le dossier drawable. https://android.googlesource.com/platform/frameworks/base/+/efd1c67

Spécifiez le fichier image copié avec drawableRight de EditText.


    <EditText
        android:id="@+id/et_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawableRight="@drawable/numberpicker_down_normal_holo_light"/>

référence

EditText with a Popup List

Recommended Posts

[Android] Affichage des candidats d'entrée à l'aide de la fenêtre contextuelle Liste
Énumération des modèles de combinaison à l'aide de List
[Android] Implémentation de ListView à défilement latéral à l'aide de RecyclerView
Acquisition du contenu d'entrée à l'aide de Scanner (Java)
[Rails] Affichage des données de structure à plusieurs niveaux à l'aide de la boîte de sélection
Comment afficher le résultat du remplissage du formulaire
Histoire de l'automatisation des tests avec Appium [Android / java]