我正在研究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);
}
任何帮助将不胜感激。
答案 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
属性添加到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>
答案 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