78

在我的Android蜂窩應用程序中,我使用Tabs作爲導航樣式。我想在溢出按鈕旁邊添加一個項目,但我希望該項目是一個下拉列表,用戶將能夠在那裏選擇一個選項,但與導航無關。自從我使用以來最簡單的方法是什麼mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);如何在操作欄上添加下拉項目

是否可以在不使用自定義視圖的情況下執行此操作?

+0

檢查4鏈接:這些鏈接幫助您的http://fizzylogic.azurewebsites .net/2012/03/05/mono-for-android-by-action-bar/https://github.com/StylingAndroid/StylingActionBar https://github.com/StylingAndroid/BasicActionBar – Kumar

回答

206

第一種選擇:

菜單/ 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> 

第二個選項:

菜單/ 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> 

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

文檔菜單資源 - http://developer.android.com/guide/topics/resources/menu-resource.html

+1

這些子菜單是ag重複提示!爲我節省了數小時的研究和工作,謝謝! – damaxxed

+0

很好的答案!順便說一句,你也可以在子菜單中包含圖標。 –

+5

如何響應微調器的點擊? – gregm

28

絕對最好的,我發現迄今最簡單的答案是here

基本上,在這種情況下不需要自定義佈局。只需設置actonViewClass:

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

再處理它在onCreateOptionsMenu,像往常一樣:

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

這是迄今爲止最簡單和乾淨的解決方案。原作者FrançoisPoyer的致謝。

+0

經過測試和認可。 –

0

這將作爲下拉只有

<?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(真)

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


    super.onCreateOptionsMenu(menu, inflater); 
} 
相關問題