78

Android Honeycomb uygulamasında, Sekme'yi gezinme stili olarak kullanıyorum. Taşma düğmesinin yanında bir öğe eklemek istiyorum, ancak bu öğenin bir açılır liste olmasını istiyorum ve kullanıcı orada bir seçenek seçebilir, ancak navigasyonla ilgili değildir. mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);Eylem çubuğunda açılır menü nasıl eklenir

Kullandığımdan bu yana en kolay yol nedir? Özel görünüm kullanmadan bunu yapmak mümkün mü?

+0

4 bağlantısını kontrol edin (doğru) sadece fragmanı içindeki

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

setHasOptionsMenu çalışacaktır: Bu bağlantılar sizi yardımcı http: //fizzylogic.azurewebsites .net/2012/03/05/android için mono-için-örnek-the-action-bar/https://github.com/StylingAndroid/StylingActionBar https://github.com/StylingAndroid/BasicActionBar – Kumar

cevap

206

İlk seçenek:

menüsü/options.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> 

İkinci seçenek:

menü/options.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> 

düzen/action_sort.xml: menü kaynakları için

<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" /> 

Dokümanlar - Kesinlikle http://developer.android.com/guide/topics/resources/menu-resource.html

+1

Bu alt menüler ag reat ipucu! Çalışma saatlerini kurtardım, teşekkürler! – damaxxed

+0

Harika cevap! Btw., Ayrıca alt menüye de simgeler ekleyebilirsiniz. –

+5

Çeviricinin bir tıklamasına nasıl yanıt verebilirim? – gregm

28

en iyi ve ben bugüne kadar bulunmuş en basit cevabı here.

Temel olarak, bu durumda özel düzen gerekmez.

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

Sonra her zamanki gibi onCreateOptionsMenu içinde idare: Sadece actonViewClass set

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

Bu kadar basit ve en temiz çözüm gereğidir. Orijinal yazar François Poyer'e kredi.

+0

Test edildi ve onaylandı. –

0

Bu açılan olarak

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


    super.onCreateOptionsMenu(menu, inflater); 
} 
İlgili konular