Vek*_*r88 1 android android-appcompat android-menu android-support-library
我正在将我的应用程序迁移到最新的v7支持库,并提供材料设计支持.
我有一个简单的菜单,我希望在我的菜单中显示ActionBar.
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/platformselect_button_settings"
android:icon="@drawable/ic_action_settings"
android:orderInCategory="1"
android:showAsAction="always"
android:title="@string/menu_settings"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
问题是showAsAction首选项被忽略,我必须做的是使其工作是强制onCreateOptionsMenu方法中的首选项:
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.platformselect_overflow_menu, menu);
for(int i = 0;i<menu.size();i++){
MenuItemCompat.setShowAsAction(menu.getItem(i), MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
}
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?为什么忽略存储在XML中的首选项?
使用AppCompat时,您需要使用不同的命名空间.
试试这个:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/platformselect_button_settings"
android:icon="@drawable/ic_action_settings"
android:orderInCategory="1"
app:showAsAction="always"
android:title="@string/menu_settings"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
来自这里的文档:http: //developer.android.com/guide/topics/ui/actionbar.html#ActionItems
使用支持库中的XML属性 请注意,上面的showAsAction属性使用标记中定义的自定义命名空间.在使用支持库定义的任何XML属性时,这是必需的,因为旧设备上的Android框架中不存在这些属性.因此,您必须使用自己的命名空间作为支持库定义的所有属性的前缀.
| 归档时间: |
|
| 查看次数: |
1160 次 |
| 最近记录: |