我在我的应用程序中使用app compat主题,在操作栏中我有一个菜单,其中一个项目应该显示为图标 - 但我得到这样的菜单按钮
这是菜单xml的代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_play"
android:icon="@drawable/play"
android:orderInCategory="100"
android:showAsAction="always"/>
</menu>
以下是关于如何初始化操作栏的代码:
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(false);
并显示菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.names, menu);
playStop = menu.findItem(R.id.action_play);
return true;
}
那么有人可以帮我显示菜单项吗?
由于
答案 0 :(得分:8)
使用支持库,android:showAsAction
将无法完成任务。所以你的菜单声明不正确。来自documentation
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
yourapp:showAsAction="ifRoom" />
...
</menu>
如果操作栏中的项目空间不足,则会出现在操作溢出中。
使用支持库中的XML属性
请注意,上面的showAsAction属性使用标记中定义的自定义命名空间。使用任何XML时都需要这样做 由支持库定义的属性,因为这些属性可以 旧设备上的Android框架中不存在。所以你必须使用 您自己的命名空间作为由...定义的所有属性的前缀 支持图书馆。
所以你的菜单xml应该是
<?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/action_play"
android:icon="@drawable/play"
android:orderInCategory="100"
app:showAsAction="always"/>
</menu>
答案 1 :(得分:0)
您需要使用
app:showAsAction="always"
而不是
android:showAsAction="always"