欢迎访问 生活随笔!

凯发k8官方网

当前位置: 凯发k8官方网 > 运维知识 > android >内容正文

android

android menu item属性,menuitem -凯发k8官方网

发布时间:2024/10/8 android 0 豆豆
凯发k8官方网 收集整理的这篇文章主要介绍了 android menu item属性,menuitem - android 4.3菜单项showasaction =“always”被忽略 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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个凯发k8官方网的解决方案

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。

正确的凯发k8官方网的解决方案:

menuinflater menuinflater = getmenuinflater();

menuinflater.inflate(r.menu.menu_example, menu);

凯发k8官方网的解决方案不正确:

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个项目。 我的凯发k8官方网的解决方案:

@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

总结

以上是凯发k8官方网为你收集整理的android menu item属性,menuitem - android 4.3菜单项showasaction =“always”被忽略的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得凯发k8官方网网站内容还不错,欢迎将凯发k8官方网推荐给好友。

网站地图