始终在支持操作栏中显示菜单项

时间:2014-03-07 06:45:37

标签: android android-actionbar optionmenu

enter image description here我正在研究android应用程序。我已经在其中实现了支持的操作栏。我想始终显示选项菜单项。但它没有表现出来。它显示在下拉菜单中。我的下面给出的菜单项代码。

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

    />

ActionBar Activity的代码如下: -

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

任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:43)

如果您使用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属性仅适用于自定义字符,请参阅the documentation。根据它:

  

请注意,上面的showAsAction属性使用标记中定义的自定义命名空间。在使用支持库定义的任何XML属性时,这是必需的,因为旧设备上的Android框架中不存在这些属性。

希望这有帮助。

答案 1 :(得分:27)

来自docs 您应该将showAsAction属性添加到alwaysifRoom

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

答案 2 :(得分:7)

您可以在android菜单xml文件中使用android:showAsAction属性的不同值。

要在操作栏上显示所有时间可见菜单,您应该使用android:showAsAction="always" ..

您也可以使用android:showAsAction="ifRoom"但它会在操作栏中显示菜单并不总是显示,但会根据不同的屏幕尺寸显示。

<强>被修改

参考:Menu items doesn't show up on the actionbar

尝试使用以下代码然后..

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

希望它会帮助你...... !!!

答案 3 :(得分:3)

删除此行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>

答案 4 :(得分:3)

我意识到这个问题是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