web-dev-qa-db-fra.com

Est-il possible de mettre en œuvre des menus déroulants exposés à l'aide d'un spinner

La conception des matériaux dispose d'un menu déroulant exposé implémenté avec un autocompletetextView comme ceci:

<com.google.Android.material.textfield.TextInputLayout
    style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:hint="@string/hint_text">

  <AutoCompleteTextView
      Android:id="@+id/filled_exposed_dropdown"
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content"/>

</com.google.Android.material.textfield.TextInputLayout>

Mais je dois avoir la même apparence une sensation, mais avec le comportement des fileurs (sans autocomplete, il suffit d'afficher la pop up et de sélectionner un élément).

J'ai désactivé l'édition sur l'autocompletetextview pour éviter d'utiliser la complète automatique, mais après avoir sélectionné l'un de l'élément, alors l'autocomplète indique simplement les éléments correspondant au texte de l'élément sélectionné attribué à un filtre utilisé dans cette vue. Ceci est le code:

        <AutoCompleteTextView
                Android:id="@+id/filled_exposed_dropdown"
                Android:layout_width="match_parent"
                Android:layout_height="match_parent"
                Android:layout_margin="16dp"
                **Android:editable="false"**/>

Aussi, j'ai mis un auditeur à ouvrir la liste des articles lorsque vous cliquez dessus

        val editTextFilledExposedDropdown = findViewById<AutoCompleteTextView>(R.id.filled_exposed_dropdown)
        editTextFilledExposedDropdown.setAdapter(adapter)
        editTextFilledExposedDropdown.setOnClickListener {
            (it as AutoCompleteTextView).showDropDown()
        }

Donc, je voudrais savoir s'il est possible de mettre en œuvre cela mais avec un spinner

enter image description here

C'était ma tentative d'utilisation d'un spinner, mais elle n'affiche pas le style correctement OUTDODODODE.DENSE.EXPOSEDDropDownMenu et affiche également l'icône du bas de la flèche, je pense que l'une pour le style et l'autre pour le fileur.

c'était le code avec le fileur:

<com.google.Android.material.textfield.TextInputLayout
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="Hint">
    <com.google.Android.material.textfield.TextInputEditText
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"/>

</com.google.Android.material.textfield.TextInputLayout>


<com.google.Android.material.textfield.TextInputLayout
        Android:id="@+id/layout_id"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense.ExposedDropdownMenu"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="Currency">
    <androidx.appcompat.widget.AppCompatSpinner
            Android:id="@+id/my_spinner"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"/>

</com.google.Android.material.textfield.TextInputLayout>
7
Jimmy Alvarez

Que diriez-vous de créer PopupMenu au lieu de AutoCompleteTextView Voici un exemple de la création de menu In Android:

    Context wrapper = new ContextThemeWrapper(getContext(), R.style.popupMenuStyle);
//yourView is the view that you want to display the menu above it.
                PopupMenu popupMenu = new PopupMenu(wrapper, yourView);
                popupMenu.getMenuInflater().inflate(R.menu.menu, popupMenu.getMenu());
                popupMenu.setOnMenuItemClickListener(item -> {
                    switch (item.getItemId()) {
                        case R.id.delete:
                            //delete
                            break;
                        case R.id.edit:
                            //edit
                            break;
                    }
                    popupMenu.dismiss();
                    return true;
                });
                popupMenu.show();

menu.xml Fichier Inside Men Dossier:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item
        Android:id="@+id/edit"
        Android:title="@string/edit">

    </item>
    <item
        Android:id="@+id/delete"
        Android:title="@string/delete">
    </item>
</menu>
0
Mohammad Sommakia