Les icônes de chargement permettent de sélectionner rapidement une valeur parmi un ensemble. Par défaut, une icône de chargement affiche la valeur actuellement sélectionnée. Appuyer sur l'icône de chargement affiche un menu affichant toutes les autres valeurs que l'utilisateur peut sélectionner.
Vous pouvez ajouter une icône de chargement à votre mise en page avec la
Spinner
, ce que vous faites généralement dans votre mise en page XML avec
Élément <Spinner>
. Ce processus est illustré ci-dessous
Exemple:
<Spinner android:id="@+id/planets_spinner" android:layout_width="match_parent" android:layout_height="wrap_content" />
Pour remplir l'icône de chargement avec une liste d'options, spécifiez une
SpinnerAdapter
dans votre
Activity
ou
Fragment
le code source.
Si vous utilisez des composants
Material Design,
exposé
Les menus déroulants équivalent à Spinner
.
Indiquer les choix de l'utilisateur dans l'icône de chargement
Les choix que vous fournissez pour la roue de sélection des couleurs peuvent provenir de n'importe quelle source, mais vous
vous devez les fournir via un SpinnerAdapter
, par exemple
ArrayAdapter
si les options sont disponibles dans un tableau
CursorAdapter
si les choix sont disponibles
à partir d'une requête de base de données.
Par exemple, si les options disponibles pour votre icône de chargement sont prédéterminées, vous pouvez lui fournir un tableau de chaînes défini dans ressource de chaîne fichier :
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="planets_array"> <item>Mercury</item> <item>Venus</item> <item>Earth</item> <item>Mars</item> <item>Jupiter</item> <item>Saturn</item> <item>Uranus</item> <item>Neptune</item> </string-array> </resources>
Avec un tableau comme celui-ci, vous pouvez utiliser le code suivant dans votre
Activity
ou Fragment
pour fournir à l'icône de chargement le
à l'aide d'une instance de ArrayAdapter
:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ).also { adapter -> // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) // Apply the adapter to the spinner. spinner.adapter = adapter }
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); // Create an ArrayAdapter using the string array and a default spinner layout. ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item ); // Specify the layout to use when the list of choices appears. adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner. spinner.setAdapter(adapter);
La
createFromResource()
vous permet de créer un ArrayAdapter
à partir du tableau de chaînes. La
Le troisième argument de cette méthode est une ressource de mise en page qui définit la manière
l'option sélectionnée s'affiche dans l'icône de chargement. La plate-forme fournit
simple_spinner_item
mise en page. Il s'agit de la mise en page par défaut, sauf si vous souhaitez définir votre propre mise en page pour
l’apparence de la roue de sélection des couleurs.
Appeler
setDropDownViewResource(int)
pour spécifier la mise en page que l'adaptateur utilise pour afficher la liste des options de chargement.
simple_spinner_dropdown_item
est une autre mise en page standard
définie par la plateforme.
Appeler
setAdapter()
pour appliquer l'adaptateur à votre Spinner
.
Répondre aux sélections des utilisateurs
Lorsque l'utilisateur sélectionne un élément du menu de l'icône de chargement,
Spinner
objet
reçoit un événement "on-item-selected".
Pour définir le gestionnaire d'événements de sélection pour une icône de chargement, implémentez la
AdapterView.OnItemSelectedListener
de commande et la couche correspondante
onItemSelected()
. Voici, par exemple, une implémentation de l'interface dans une
Activity
:
Kotlin
class SpinnerActivity : Activity(), AdapterView.OnItemSelectedListener { ... override fun onItemSelected(parent: AdapterView<*>, view: View?, pos: Int, id: Long) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } override fun onNothingSelected(parent: AdapterView<*>) { // Another interface callback. } }
Java
public class SpinnerActivity extends Activity implements OnItemSelectedListener { ... public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { // An item is selected. You can retrieve the selected item using // parent.getItemAtPosition(pos). } public void onNothingSelected(AdapterView<?> parent) { // Another interface callback. } }
La
L'interface AdapterView.OnItemSelectedListener
nécessite
onItemSelected()
et
onNothingSelected()
méthodes de rappel.
Spécifiez l'implémentation de l'interface en appelant
setOnItemSelectedListener()
:
Kotlin
val spinner: Spinner = findViewById(R.id.planets_spinner) spinner.onItemSelectedListener = this
Java
Spinner spinner = (Spinner) findViewById(R.id.planets_spinner); spinner.setOnItemSelectedListener(this);
Si vous implémentez AdapterView.OnItemSelectedListener
avec votre Activity
ou votre Fragment
, comme dans
l'exemple précédent, vous pouvez transmettre this
en tant qu'instance d'interface.