Die AndroidX-Bibliothek
Toolbar
bietet
wie Nutzer mit Ihrer App interagieren können.
Unter Aktionen hinzufügen und verarbeiten wird beschrieben, wie Sie
definieren eine Aktion, bei der es sich um eine Schaltfläche oder einen Menüpunkt handeln kann. In diesem Dokument wird beschrieben, wie Sie
zwei vielseitige Komponenten:
- Die Aktionsansicht ist eine Aktion, die in der App-Leiste umfangreiche Funktionen bietet. Für Beispiel: In einer Suchaktionsansicht können Nutzer ihren Suchtext in die App-Leiste eingeben, ohne Aktivitäten oder Fragmente zu ändern.
- Ein Aktionsanbieter ist eine Aktion mit einem eigenen benutzerdefinierten Layout. Zu Beginn der Aktion als Schaltfläche oder Menüelement angezeigt; Wenn der Nutzer auf die Aktion tippt, steuert der Aktionsanbieter wie Sie das Verhalten der Aktion definieren. Beispielsweise könnte der Aktionsanbieter auf eine durch Einblenden eines Menüs.
AndroidX bietet mehrere spezialisierte Aktionsansichten und Widgets für Aktionsanbieter. Beispiel: Der Parameter
Widget „SearchView
“
Implementiert eine Aktionsansicht für die Eingabe von Suchanfragen. Die
ShareActionProvider
Das Widget implementiert einen Aktionsanbieter für die Weitergabe von Informationen an andere Apps. Sie können auch
Ihre eigenen Aktionsansichten und Aktionsanbieter.
Aktionsansicht hinzufügen
Um eine Aktionsansicht hinzuzufügen, erstellen Sie ein
<item>
in der Menüressource der Symbolleiste hinzu, wie unter
Aktionen hinzufügen und verarbeiten Fügen Sie dem Parameter
<item>
-Element:
actionViewClass
: die Klasse eines Widgets, das die Aktion implementiertactionLayout
: eine Layoutressource, die die Komponenten der Aktion beschreibt
Setzen Sie das Attribut showAsAction
auf "ifRoom|collapseActionView"
oder
"never|collapseActionView"
Das Flag collapseActionView
gibt an, wie
das Widget anzuzeigen, wenn der Benutzer nicht damit interagiert. Befindet sich das Widget in der App-Leiste,
zeigt das Widget als Symbol an. Befindet sich das Widget im Dreipunkt-Menü, zeigt die App das Widget an.
als Menüpunkt festlegen. Wenn der Nutzer mit der Aktionsansicht interagiert, wird sie erweitert und füllt die App-Leiste aus.
Mit dem folgenden Code wird der App-Leiste beispielsweise ein SearchView
-Widget hinzugefügt:
<item android:id="@+id/action_search" android:title="@string/action_search" android:icon="@drawable/ic_search" app:showAsAction="ifRoom|collapseActionView" app:actionViewClass="androidx.appcompat.widget.SearchView" />
Wenn der Nutzer nicht mit dem Widget interagiert, zeigt die App das Widget als das angegebene Symbol an
von android:icon
. Ist in der App-Leiste nicht genügend Platz, fügt die App die Aktion zur
Dreipunkt-Menü.
Wenn Nutzende auf das Symbol oder den Menüpunkt tippen, wird das Widget erweitert und füllt die Symbolleiste aus. wie Nutzende damit interagieren können.
<ph type="x-smartling-placeholder">Wenn Sie die Aktion konfigurieren müssen, tun Sie dies in der
onCreateOptionsMenu()
Callback des Nutzers an. Sie können den Objektverweis der Aktionsansicht abrufen, indem Sie die Methode
getActionView()
. Mit dem folgenden Code wird beispielsweise der Objektverweis für das SearchView
abgerufen.
Widget, das im vorherigen Codebeispiel definiert wurde:
Kotlin
override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.main_activity_actions, menu) val searchItem = menu?.findItem(R.id.action_search) val searchView = searchItem?.actionView as SearchView // Configure the search info and add any event listeners. return super.onCreateOptionsMenu(menu) }
Java
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_activity_actions, menu); MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) searchItem.getActionView(); // Configure the search info and add any event listeners. return super.onCreateOptionsMenu(menu); }
Maximierte Ansicht „Auf Aktion reagieren“
Wenn das <item>
-Element der Aktion das Flag collapseActionView
hat, gibt das Element
wird die Aktionsansicht als Symbol angezeigt, bis der Nutzer mit der Aktionsansicht interagiert. Wenn Nutzende
tippt auf das Symbol, den integrierten Handler für
onOptionsItemSelected()
Maximiert die Aktionsansicht. Wenn Ihre abgeleitete Aktivität die
onOptionsItemSelected()
-Methode muss Ihre Überschreibungsmethode Folgendes aufrufen:
super.onOptionsItemSelected()
, damit die übergeordnete Klasse die Aktionsansicht maximieren kann.
Wenn Sie eine Aktion ausführen möchten, während die Aktion maximiert oder minimiert ist, können Sie eine Klasse definieren, die
implements
MenuItem.OnActionExpandListener
,
und ein Mitglied des Kurses an
setOnActionExpandListener()
.
Sie können die Aktivität beispielsweise abhängig davon aktualisieren, ob eine Aktionsansicht maximiert oder
minimiert. Das folgende Code-Snippet zeigt, wie ein Listener definiert und übergeben wird:
Kotlin
override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.options, menu) // Define the listener. val expandListener = object : MenuItem.OnActionExpandListener { override fun onMenuItemActionCollapse(item: MenuItem): Boolean { // Do something when the action item collapses. return true // Return true to collapse the action view. } override fun onMenuItemActionExpand(item: MenuItem): Boolean { // Do something when it expands. return true // Return true to expand the action view. } } // Get the MenuItem for the action item. val actionMenuItem = menu?.findItem(R.id.myActionItem) // Assign the listener to that action item. actionMenuItem?.setOnActionExpandListener(expandListener) // For anything else you have to do when creating the options menu, // do the following: return true }
Java
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.options, menu); // Define the listener. OnActionExpandListener expandListener = new OnActionExpandListener() { @Override public boolean onMenuItemActionCollapse(MenuItem item) { // Do something when the action item collapses. return true; // Return true to collapse action view. } @Override public boolean onMenuItemActionExpand(MenuItem item) { // Do something when it expands. return true; // Return true to expand the action view. } }; // Get the MenuItem for the action item. MenuItem actionMenuItem = menu.findItem(R.id.myActionItem); // Assign the listener to that action item. MenuItemCompat.setOnActionExpandListener(actionMenuItem, expandListener); // For anything else you have to do when creating the options menu, // do the following: return true; }
Aktionsanbieter hinzufügen
Wenn Sie einen Aktionsanbieter deklarieren möchten, erstellen Sie im Menü der Symbolleiste ein <item>
-Element
enthalten, wie unter Aktionen hinzufügen und verarbeiten beschrieben. Hinzufügen eines
actionProviderClass
und legen Sie dafür den voll qualifizierten Klassennamen für die
Action Provider-Klasse.
Mit dem folgenden Code wird beispielsweise ein ShareActionProvider
deklariert, bei dem es sich um ein Widget
die in der AndroidX-Bibliothek definiert sind, über die deine App Daten mit anderen Apps teilen kann:
<item android:id="@+id/action_share" android:title="@string/share" app:showAsAction="ifRoom" app:actionProviderClass="androidx.appcompat.widget.ShareActionProvider"/>
In diesem Fall ist es nicht nötig, ein Symbol für das Widget anzugeben, da
ShareActionProvider
stellt eigene Grafiken zur Verfügung. Wenn Sie eine benutzerdefinierte Aktion verwenden,
ein Symbol deklarieren.
Weitere Informationen
- Weitere Informationen finden Sie unter
ShareActionProvider
finden Sie ein Beispiel für das Hinzufügen einer Freigabeaktion zur oberen App-Leiste. - Weitere Informationen finden Sie unter
ActionProvider
für Weitere Informationen zum Erstellen eines Anbieters für benutzerdefinierte Aktionen.