web-dev-qa-db-ja.com

サポートアクションバーに常にメニュー項目を表示

enter image description here私はAndroidアプリケーションに取り組んでいます。サポートされているアクションバーを実装しています。オプションメニュー項目を常に表示したいのですが、表示されません。ドロップダウンメニューに表示されます。以下のメニュー項目用。

<item
    Android:id="@+id/action_settings"
    Android:icon="@drawable/add_post"
    Android:title="@string/action_settings"

    />

そして、ActionBarアクティビティのコードを以下に示します:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);
}

任意の助けをいただければ幸いです。

20
Nitesh Kabra

docs からshowAsAction属性をalwaysまたはifRoomに追加する必要があります

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >
    <!-- Search, should appear as action button -->
    <item Android:id="@+id/action_search"
          Android:icon="@drawable/ic_action_search"
          Android:title="@string/action_search"
          Android:showAsAction="ifRoom" />
    <!-- Settings, should always be in the overflow -->
    <item Android:id="@+id/action_settings"
          Android:title="@string/action_settings"
          Android:showAsAction="never" />
</menu>
27
Shubhank

AppCompat ActionBarを使用する場合、次の方法でレイアウトを変更する必要があります。

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
      xmlns:app="http://schemas.Android.com/apk/res-auto" >
    <item
        Android:id="@+id/action_settings"
        Android:icon="@drawable/add_post"
        Android:title="@string/action_settings"
        app:showAsAction="always" />
</menu>  

showAsAction属性は、カスタムプレフィックスでのみ機能します。 ドキュメント を参照してください。それによると:

上記のshowAsAction属性は、タグで定義されたカスタム名前空間を使用することに注意してください。これは、サポートライブラリで定義されたXML属性を使用する場合に必要です。これらの属性は、古いデバイスのAndroidフレームワークには存在しないためです。

お役に立てれば。

44
fllo

Android menu xml file ..)でAndroid:showAsActionプロパティの異なる値を使用できます。

アクションバーに常に表示されるメニューを表示するには、Android:showAsAction="always"を使用する必要があります。

Android:showAsAction="ifRoom"を使用することもできますが、アクションバーにメニューが常に表示されるとは限りませんが、異なる画面サイズに従って表示されます。

編集済み

参照: メニュー項目はアクションバーに表示されません

以下のコードを試してください。

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto" >
    <item
        Android:id="@+id/menu_lang"
        app:showAsAction="always" <!-- app:showAsAction="ifRoom" -->
        Android:title="@string/menu_lang"
        Android:icon="@Android:drawable/ic_input_lang"/>
</menu>

それがあなたを助けることを願っています.. !!!

7
Rushabh Patel

この質問は2年以上前のものですが、完全を期すために、コードでこれを設定する場合は、次を使用してください。

menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);

他のオプションは

MenuItem.SHOW_AS_ACTION_NEVER
MenuItem.SHOW_AS_ACTION_IF_ROOM
MenuItem.SHOW_AS_ACTION_ALWAYS
MenuItem.SHOW_AS_ACTION_WITH_TEXT
MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW
3
cren90

この行を削除xmlns:app="http://schemas.Android.com/apk/res-auto"

使用する - Android:showAsAction="always"の代わりにapp:showAsAction="always"

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android" >

<item
    Android:id="@+id/action_refresh"
    Android:icon="@drawable/ic_refresh"
    Android:showAsAction="ifRoom"
    Android:title="@string/action_refresh"/>

<item
    Android:id="@+id/action_filter"
    Android:icon="@drawable/ic_filter"
    Android:showAsAction="always"
    Android:title="@string/action_filter"/>
</menu>
3
Nauman Zubair