Dar*_*ski 5 android android-appcompat android-actionbar android-actionbar-compat
我在我的应用程序中使用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>
Run Code Online (Sandbox Code Playgroud)
以下是关于如何初始化操作栏的代码:
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setTitle(title);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(false);
Run Code Online (Sandbox Code Playgroud)
并显示菜单:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.names, menu);
playStop = menu.findItem(R.id.action_play);
return true;
}
Run Code Online (Sandbox Code Playgroud)
那么有人可以帮我显示菜单项吗?
谢谢
使用支持库,android:showAsAction将无法完成其任务.所以你的菜单声明不正确.从文档
<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>
Run Code Online (Sandbox Code Playgroud)
如果操作栏中的项目空间不足,则会出现在操作溢出中.
使用支持库中的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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1422 次 |
| 最近记录: |