web-dev-qa-db-fra.com

Spinner dans Edittext

J'ai un Edittext avec un [v] dessinable sur le côté droit pour le faire ressembler à un fileur. Maintenant, comment puis-je y parvenir? Je définirai l'edittext comme cliquable puis quand je clique dessus, une boîte de dialogue apparaîtra avec une liste (ressemble à une option de spinner)

C'est possible?

   <Android.support.design.widget.TextInputLayout
    Android:id="@+id/tilAppCategory"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginTop="15dp"
    >

    <EditText
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:id="@+id/edtAppCategory"
        Android:hint="Category"
        Android:fontFamily="sans-serif-light"
        Android:textColorHint="@color/textColorHint"
        Android:maxLines="1"
        Android:gravity="center|start"
        Android:inputType="textNoSuggestions"
        Android:textColor="@color/colorPrimaryDark"
        Android:textSize="14sp"
        Android:drawableEnd="@drawable/icon_spinner_down"
        Android:focusableInTouchMode="true"
        Android:clickable="true"
        />

</Android.support.design.widget.TextInputLayout>
7

Vous pouvez faire comme ci-dessous dans votre fichier XML: Ici Android:drawableRight vous pouvez définir l'icône gauche droite en haut et en bas dans EditText et TextView dans andorid

<EditText
Android:id="@+id/name"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:inputType="text"
Android:drawableRight="@drawable/ic_menu_share"/>

Pour afficher une liste comme spinner, utilisez AutoCompleteTextView

Android AutoCompleteTextView complète le mot en fonction des mots réservés, donc pas besoin d'écrire tous les caractères du mot.

Android AutoCompleteTextView est un champ de texte modifiable, il affiche une liste de suggestions dans un menu déroulant à partir duquel l'utilisateur ne peut sélectionner qu'une seule suggestion ou valeur.

Android AutoCompleteTextView est la sous-classe de la classe EditText. MultiAutoCompleteTextView est la sous-classe de la classe AutoCompleteTextView.

Tutoriel d'exemple Android AutoCompleteTextView

[~ # ~] ou [~ # ~]

vous pouvez utiliser Android PopupWindow Listview example.

/**
  * handle header listview onclick event
  */
 private OnClickListener showPopupWindow() {
  return new OnClickListener() {

   @Override
   public void onClick(View v) {
    PopupWindow popUp = popupWindowsort();
    popUp.showAsDropDown(v, 0, 0); // show popup like dropdown list
   }
  };
 }

 /**
  * show popup window method reuturn PopupWindow
  */
 private PopupWindow popupWindowsort() {

  // initialize a pop up window type
  popupWindow = new PopupWindow(this);

  ArrayList<String> sortList = new ArrayList<String>();
  sortList.add("A to Z");
  sortList.add("Z to A");
  sortList.add("Low to high price");

  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, Android.R.layout.simple_dropdown_item_1line,
    sortList);
  // the drop down list is a list view
  ListView listViewSort = new ListView(this);

  // set our adapter and pass our pop up window contents
  listViewSort.setAdapter(adapter);

  // set on item selected
  listViewSort.setOnItemClickListener(onItemClickListener());

  // some other visual settings for popup window
  popupWindow.setFocusable(true);
  popupWindow.setWidth(250);
  // popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.white));
  popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

  // set the listview as popup content
  popupWindow.setContentView(listViewSort);

  return popupWindow;
 }

trouver l'implémentation complète dans les liens ci-dessous:

Exemple de liste d'affichage PopupWindow Android.

3
Chetan Joshi

Vous pouvez y parvenir avec autocompletetextview comme

<AutoCompleteTextView
                        Android:id="@+id/acType"
                        Android:layout_width="match_parent"
                        Android:layout_height="wrap_content"
                        Android:maxLines="1"
                        Android:paddingBottom="@dimen/lef_margin"
                        Android:paddingTop="@dimen/lef_margin"
                        Android:singleLine="true"
                        Android:textSize="@dimen/header_text_large"/>


ArrayAdapter arrayAdapter= new ArrayAdapter<>(getContext(), Android.R.layout.simple_list_item_1, dataList);
    acType.setAdapter(arrayAdapter);
    acType.setInputType(0);



acType.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus)
                acType.showDropDown();
        }
    });
2
Chirag.T

Avec l'aide de la réponse de @ Chetan, j'ai créé ce widget qui peut aider n'importe qui. Veuillez fournir une liste d'options en utilisant

setOptions

méthode

 public class DropDown extends AppCompatTextView implements View.OnClickListener {

        private ArrayList<String> options = new ArrayList<>();

        public DropDown(Context context) {
            super(context);
            initView();
        }

        public DropDown(Context context, AttributeSet attrs) {
            super(context, attrs);
            initView();
        }

        public DropDown(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            initView();
        }

        private void initView() {
            this.setOnClickListener(this);
        }

        private PopupWindow popupWindowsort(Context context) {

            // initialize a pop up window type
            PopupWindow popupWindow = new PopupWindow(context);
            popupWindow.setWidth(this.getWidth());

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, Android.R.layout.simple_dropdown_item_1line,
                    options);
            // the drop down list is a list view
            ListView listViewSort = new ListView(context);

            // set our adapter and pass our pop up window contents
            listViewSort.setAdapter(adapter);

            // set on item selected
            listViewSort.setOnItemClickListener((parent, view, position, id) -> {
                this.setText(options.get(position));
                popupWindow.dismiss();
            });

            // some other visual settings for popup window
            popupWindow.setFocusable(true);
            // popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.white));
            popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

            // set the listview as popup content
            popupWindow.setContentView(listViewSort);

            return popupWindow;
        }

        @Override
        public void onClick(View v) {
            if (v == this) {
                PopupWindow window = popupWindowsort(v.getContext());
                window.showAsDropDown(v, 0, 0);
            }
        }

        public void setOptions(ArrayList<String> options) {
            this.options = options;
        }
}

dans votre fichier de mise en page

<com.yourdomian.app.DropDown
    style="@style/formDropDown"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:hint="@string/ship_to_address" />

dans votre fichier de style

<style name="formDropDown">
    <item name="Android:paddingRight">20dp</item>
    <item name="Android:paddingLeft">24dp</item>
    <item name="Android:paddingTop">20dp</item>
    <item name="Android:paddingBottom">20dp</item>
    <item name="Android:textSize">13sp</item>
    <item name="Android:background">@drawable/edit_text_background_dark_round</item>
    <item name="Android:layout_marginTop">10dp</item>
    <item name="Android:elevation">5dp</item>
    <item name="Android:drawableRight">@drawable/ic_down_arrow</item>
    <item name="Android:gravity">center_vertical</item>
</style>

Dans votre fichier Java

ArrayList<String> options = new ArrayList<>();
    options.add("Option 1");
    options.add("Option 2");
    options.add("Option 3");
    options.add("Option 4");

    ((DropDown)findViewById(R.id.dropdown)).setOptions(options);

La sortie sera enter image description here

1
Umair Khalid