android menu item属性,menuitem -尊龙游戏旗舰厅官网
menuitem - android 4.3菜单项showasaction =“always”被忽略
我使用从android 4.3(api级别18)开始提供的新v7 appcompat库。
无论showasaction中为菜单项指定了什么,它都没有显示 - 它总是创建溢出菜单图标,甚至在菜单下放置一个菜单项。
试图将菜单添加到这样的活动:
@override
public boolean oncreateoptionsmenu(menu menu) {
getmenuinflater().inflate(r.menu.menu_sizes, menu);
return true;
}
这是我的菜单xml:
android:title="@string/menu_add_item"
android:orderincategory="10"
android:showasaction="always"
android:icon="@android:drawable/ic_menu_add" />
它是新支持库v7的错误,还是代码有问题?我以前多次使用与actionbarsherlock类似的代码。
13个尊龙游戏旗舰厅官网的解决方案
309 votes
您可能缺少必需的命名空间:
xmlns:[yourapp]="http://schemas.android.com/apk/res-auto">
android:title="@string/menu_add_item"
android:orderincategory="10"
[yourapp]:showasaction="always"
android:icon="@android:drawable/ic_menu_add" />
将actionbaractivity替换为您的应用名称或您心所欲望的任何命名空间。
其他值得检查的事情:
查看您的活动类是否扩展为actionbaractivity
检查问题是否仍然存在。
android参考文档:添加动作按钮。 以下是相关文字:
如果您的应用程序使用支持库以获得与android 2.1一样低的版本的兼容性,那么android:namespace中不提供showasaction属性。 相反,此属性由支持库提供,您必须定义自己的xml命名空间并将该命名空间用作属性前缀。 (自定义xml命名空间应该基于您的应用程序名称,但它可以是您想要的任何名称,并且只能在您声明它的文件范围内访问。)
nikola despotoski answered 2019-07-05t15:13:09z
52 votes
弄清楚自己。 使用支持库v7,showasaction应该在这样的自定义命名空间下:
xmlns:balloonberry="http://schemas.android.com/apk/res-auto">
android:title="@string/menu_add_item"
android:orderincategory="10"
balloonberry:showasaction="always"
android:icon="@android:drawable/ic_menu_add" />
mcingwe answered 2019-07-05t15:13:36z
28 votes
还要确保在actionbaractivity.oncreateoptionsmenu()方法中使用正确的inflater。
正确的尊龙游戏旗舰厅官网的解决方案:
menuinflater menuinflater = getmenuinflater();
menuinflater.inflate(r.menu.menu_example, menu);
尊龙游戏旗舰厅官网的解决方案不正确:
menuinflater menuinflater = new menuinflater(this);
menuinflater.inflate(r.menu.menu_example, menu);
petrnohejl answered 2019-07-05t15:14:20z
24 votes
对于碎片
具有自定义命名空间的菜单将阻止showasaction显示。
使用" android:" showasaction的前缀将起作用,即使android studio会注意到您应该使用自定义名称空间。
android:title="add checkin"
android:orderincategory="10"
android:showasaction="always"
android:icon="@android:drawable/ic_menu_add"/>
这是使用android sdk 22和支持v4片段,以防万一。
baker answered 2019-07-05t15:15:11z
16 votes
有同样的问题,但在android 5.我有3个项目,但操作系统忽略了我的属性"总是" 并只显示了2个项目。 我的尊龙游戏旗舰厅官网的解决方案:
@override
public void oncreateoptionsmenu(menu menu, menuinflater inflater) {
log.d(tag, "oncreateoptionsmenu()");
inflater.inflate(r.menu.your_menu, menu);
for (int j = 0; j < menu.size(); j ) {
menuitem item = menu.getitem(j);
log.d(tag, "set flag for " item.gettitle());
item.setshowasactionflags(menuitem.show_as_action_always);
}
}
lukas answered 2019-07-05t15:15:38z
6 votes
还要确保您具有命名空间的正确路径。 如果错误,它不会给你一个错误信息。
我有
xmlns:myapp="http://schemas.android.com/res-auto">
代替
xmlns:myapp="http://schemas.android.com/apk/res-auto">
我所知道的只是它不起作用。 不知道我是如何设法忘记路径的/ apk部分,但它发生了。 没有错误消息,只是一个难以捉摸的错误追踪。
beccap answered 2019-07-05t15:16:20z
6 votes
在我的情况下,我不得不从我的应用程序的build.gradle编译中删除com.android.support:appcompat-v7:21.0.3&#39;。
注意:我的min sdk = 14,由android studio创建的项目插入了我不必要的依赖。
在这个替换之后你可以写 机器人:showasaction=&#34;总是&#34;
anton kizema answered 2019-07-05t15:17:02z
4 votes
这可能不是你的情况,但我正在使用
new menuinflater(this).inflate(r.menu.my_menu, menu);
改变它
getmenuinflater().inflate(r.menu.my_menu, menu);
解决了这个问题!
bakhshi answered 2019-07-05t15:18:08z
0 votes
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
android:id="@id/back"
android:icon="@drawable/back"
app:showasaction="always"
android:title="@string/back"/>
android:id="@id/save"
android:icon="@drawable/le_top_btn_icon_add"
app:showasaction="ifroom"
android:title="@string/save"/>
不工作, with supportlibraryversion =&#39; 25.1.0&#39;compilesdkversion = 25
看到&#34;警告&#34;
应该使用带有appcompat库的app:showasactionxmlns:app =&#34; [http://schemas.android.com/apk/res-auto"] less ...(ctrl f1)
使用appcompat库时,菜单资源应引用app:namespace中的showasaction,不是android:名称空间。
同样,当不使用appcompat库时,你应该使用android:showasaction属性。
我认为警告可以被忽视。
bill answered 2019-07-05t15:19:17z
0 votes
像showasaction和actionviewclass一样添加这样的自定义命名空间:
xmlns:app="http://schemas.android.com/apk/res-auto">
android:title="@string/search"
android:icon="@drawable/ic_search"
app:showasaction="collapseactionview|ifroom"
app:actionviewclass="android.widget.searchview" />
amirouche zeggagh answered 2019-07-05t15:19:44z
0 votes
最简单的方法是:
xmlns:myapp="http://schemas.android.com/apk/res-auto">
android:id="@ id/history"
android:icon="@drawable/icons8_history_white_medium"
android:title="history"
myapp:showasaction="always" />
android:id="@ id/synchrnonize"
android:icon="@drawable/icons8_synchronize_white_medium"
android:title="synchronize"
myapp:showasaction="always" />
paweł answered 2019-07-05t15:20:07z
0 votes
我通过替换解决了它
android:showasaction="ifroom"
同
app:showasaction="ifroom"
这就是menuitme xml的样子,
android:title="refresh"
android:icon="@drawable/refresh2"
app:showasaction="ifroom" />
haris answered 2019-07-05t15:20:52z
0 votes
最简单的方法是通过添加修改您的代码
xmlns:app="http://schemas.android.com/apk/res-auto"
并更改此代码
android:showasaction="always"
至
app:showasaction="always"
最后
xmlns:app="http://schemas.android.com/apk/res-auto">
android:title="@string/menu_add_item"
android:orderincategory="10"
app:showasaction="always"
android:icon="@android:drawable/ic_menu_add" />
abdulhakim zeinu answered 2019-07-05t15:21:38z
总结
以上是尊龙游戏旗舰厅官网为你收集整理的android menu item属性,menuitem - android 4.3菜单项showasaction =“always”被忽略的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 华为正式宣布鸿蒙,空欢喜一场?华为正式宣
- 下一篇: