Rotierendes Ladesymbol zur App hinzufügen

Drehscheiben bieten eine schnelle Möglichkeit, einen Wert aus einer Reihe auszuwählen. Im Standardstatus wird der aktuell ausgewählte Wert in einem rotierenden Ladesymbol angezeigt. Durch Tippen auf das rotierende Ladesymbol wird ein Menü mit allen anderen Werten angezeigt, die der Nutzer auswählen kann.

Abbildung 1: Ein Menü über ein rotierendes Ladesymbol mit den verfügbaren Werten

Mit dem Spinner-Objekt können Sie Ihrem Layout ein rotierendes Ladesymbol hinzufügen. Dies ist normalerweise in Ihrem XML-Layout mit einem <Spinner>-Element der Fall. Dies wird im folgenden Beispiel gezeigt:

<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

Geben Sie im Quellcode Activity oder Fragment ein SpinnerAdapter an, damit in das rotierende Ladesymbol eine Liste mit Auswahlmöglichkeiten eingeblendet wird.

Wenn Sie Material Design-Komponenten verwenden, entsprechen die verfügbaren Drop-down-Menüs einem Spinner.

Füllen Sie das rotierende Ladesymbol mit Nutzeroptionen.

Die Auswahlmöglichkeiten, die Sie für das rotierende Ladesymbol angeben, können aus einer beliebigen Quelle stammen. Sie müssen sie jedoch über ein SpinnerAdapter angeben. Beispiel: ArrayAdapter, wenn die Auswahlmöglichkeiten in einem Array verfügbar sind, oder CursorAdapter, wenn die Auswahlmöglichkeiten in einer Datenbankabfrage verfügbar sind.

Wenn die verfügbaren Optionen für das rotierende Ladesymbol beispielsweise vorgegeben sind, können Sie ihnen ein in einer String-Ressourcendatei definiertes String-Array zur Verfügung stellen:

<?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>

Bei einem solchen Array können Sie den folgenden Code in Activity oder Fragment verwenden, um das Array mit dem rotierenden Ladesymbol über eine Instanz von ArrayAdapter zu versorgen:

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);

Mit der Methode createFromResource() können Sie ein ArrayAdapter aus dem Stringarray erstellen. Das dritte Argument für diese Methode ist eine Layoutressource, die definiert, wie die ausgewählte Auswahl im rotierenden Steuerelement angezeigt wird. Die Plattform stellt das Layout simple_spinner_item bereit. Dies ist das Standardlayout, sofern Sie kein eigenes Layout für das rotierende Ladesymbol definieren möchten.

Rufen Sie setDropDownViewResource(int) auf, um das Layout anzugeben, das der Adapter verwendet, um die Liste der rotierenden Auswahlmöglichkeiten anzuzeigen. simple_spinner_dropdown_item ist ein weiteres Standardlayout, das von der Plattform definiert wird.

Rufen Sie setAdapter() auf, um den Adapter auf Ihr Spinner anzuwenden.

Auf Nutzerauswahl reagieren

Wenn der Nutzer ein Element aus dem Menü des rotierenden Ladesymbols auswählt, empfängt das Spinner-Objekt ein Ereignis vom Typ „Auf Artikel ausgewählt“.

Wenn Sie den Event-Handler für die Auswahl für ein rotierendes Ladesymbol definieren möchten, implementieren Sie die AdapterView.OnItemSelectedListener-Schnittstelle und die entsprechende Callback-Methode onItemSelected(). Hier siehst du beispielsweise eine Implementierung der Schnittstelle in einem 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.
    }
}

Für die AdapterView.OnItemSelectedListener-Schnittstelle sind die Callback-Methoden onItemSelected() und onNothingSelected() erforderlich.

Geben Sie die Schnittstellenimplementierung durch Aufrufen von setOnItemSelectedListener() an:

Kotlin

val spinner: Spinner = findViewById(R.id.planets_spinner)
spinner.onItemSelectedListener = this

Java

Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
spinner.setOnItemSelectedListener(this);

Wenn Sie die AdapterView.OnItemSelectedListener-Schnittstelle wie im vorherigen Beispiel mit Ihrer Activity oder Fragment implementieren, können Sie this als Schnittstelleninstanz übergeben.