Frage

In meiner Android -Wabenanwendung verwende ich Registerkarten als Navigationsstil. Ich möchte einen Element neben der Überlaufschaltfläche hinzufügen, aber ich möchte, dass dieses Element eine Dropdown -Liste ist, und der Benutzer kann dort eine Option auswählen, aber nicht mit der Navigation zusammenhängen. Was ist der einfachste Weg, seit ich benutze mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

Ist es möglich, dies ohne eine benutzerdefinierte Ansicht zu tun?

War es hilfreich?

Lösung

Erste Wahl:

Menü/Optionen.xml:

<item
    android:icon="@drawable/ic_menu_sort"
    android:showAsAction="ifRoom">
    <menu>
        <item
            android:id="@+id/menuSortNewest"
            android:title="Sort by newest" />
        <item
            android:id="@+id/menuSortRating"
            android:title="Sort by rating" />
    </menu>
</item>

Zweite Option:

Menü/Optionen.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menuSort"
        android:showAsAction="ifRoom"
        android:actionLayout="@layout/action_sort"  />
</menu>

layout/action_sort.xml:

<Spinner xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/ic_menu_refresh"
    android:entries="@array/order" />

Dokumente für Menüressourcen - http://developer.android.com/guide/topics/resources/menu-resource.html

Andere Tipps

Absolut die beste und die einfachste Antwort, die ich bisher gefunden habe, ist hier.

Grundsätzlich ist in diesem Fall kein benutzerdefiniertes Layout erforderlich. Stellen Sie einfach die ActonViewClass fest:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >

  <item android:id="@+id/spinner"
    yourapp:showAsAction="ifRoom"
    yourapp:actionViewClass="android.widget.Spinner" /> <== this is all that's required
</menu>

Und dann wie gewohnt in der OncreateOptionsmenu damit umgehen:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_layout, menu);
    MenuItem item = menu.findItem(R.id.spinner);
    Spinner spinner = (Spinner) MenuItemCompat.getActionView(item); // get the spinner
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(onItemSelectedListener); 

Dies ist bei weitem die einfachste und sauberste Lösung. Credits an François Poyer, den ursprünglichen Autor.

Es wird nur als Dropdown funktionieren

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <!--<item-->
    <!--android:id="@+id/save_contact"-->
    <!--android:icon="@drawable/edit_new"-->
    <!--android:title="Save Contact"-->
    <!--app:showAsAction="never" />-->

    <item
        android:id="@+id/send_money"
        android:icon="@drawable/edit_new"
        android:title="Send Money"
        app:showAsAction="never" />

    <item
        android:id="@+id/request_money"
        android:icon="@drawable/edit_new"
        android:title="Request money"
        app:showAsAction="never" />

    <item
        android:id="@+id/recharge"
        android:icon="@drawable/edit_new"
        android:title="Recharge"
        app:showAsAction="never" />
</menu>

Innenfragment

Sethasopionsmenu (wahr)

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.chat_details_menu, menu);


    super.onCreateOptionsMenu(menu, inflater);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top