78

私のAndroid Honeycombアプリケーションでは、タブをナビゲーションスタイルとして使用します。オーバーフローボタンの横に1つのアイテムを追加したいと思いますが、そのアイテムをドロップダウンリストにしたいので、ユーザーはそのオプションを選択できますが、ナビゲーションには関係ありません。 mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);アクションバーにドロップダウンアイテムを追加するには

カスタムビューを使用せずに行うことは可能ですか?

+0

は4リンクチェック(真)断片のみ内部

<?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動作します。これらのリンクはあなたのために役立ちます。http://fizzylogic.azurewebsitesを.net/2012/03/05/example-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

これらのサブメニューare agリアティップ!私は数時間の研究と仕事を保存しました。ありがとう! – damaxxed

+0

偉大な答え! Btw。、サブメニューにアイコンを含めることもできます。 –

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

これは、これまででもっともシンプルでクリーンなソリューションです。元の著者であるFrancois Poyerのクレジット

+0

テスト済みで承認済みです。 –

0

それはドロップダウンとして

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


    super.onCreateOptionsMenu(menu, inflater); 
} 
関連する問題