我使用的是从Android4.3(API级别18)开始提供的新的v7 appcompat库.

无论showAsAction中为菜单项指定了什么,它都不会显示——它总是创建溢出菜单图标,甚至会将单个菜单项置于菜单下.

try 向以下活动添加菜单:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_sizes, menu);
    return true;
}

这是我的菜单xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_add_size"
        android:title="@string/menu_add_item"
        android:orderInCategory="10"
        android:showAsAction="always"
        android:icon="@android:drawable/ic_menu_add" />
</menu>

这是新的支持库v7的错误,还是代码有问题?

推荐答案

您可能缺少所需的命名空间:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:[yourapp]="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/menu_add_size"
        android:title="@string/menu_add_item"
        android:orderInCategory="10"
        [yourapp]:showAsAction="always"
        android:icon="@android:drawable/ic_menu_add" />
</menu>

[yourapp]替换为你的应用程序名或任何你心中想要的名称空间.

其他值得判断的事项:

  • 看看你的活动课是否延长ActionBarActivity分钟

判断问题是否依然存在.


Android参考文档:Adding Action Buttons.以下是相关文本:

如果您的应用程序正在使用支持库以在低至Android 2.1的版本上实现兼容性,则在Android:命名空间中无法使用showAsAction属性.相反,该属性由支持库提供,您必须定义自己的XML名称空间,并使用该名称空间作为属性前缀.(自定义XML名称空间应该基于应用程序名称,但它可以是您想要的任何名称,并且只能在声明它的文件的范围内访问.)

Android相关问答推荐

请求标头为空/无法通过拦截器获取

Android布局渲染问题

在Jetpack Compose中实现焦点突出的最佳方式?

Android写/读二进制文件到共享存储

判断文本视图是否为单行

如何在Jetpack Compose中创建这个圆形?

如何将 Room Persistence 依赖项正确添加到我的 Jetack Compose Android 应用程序

闪屏 API 无法在 Android 12 上运行(API 31、32)

修复报错 RecyclerView: No adapter attached;跳过布局

可从 Play store 下载链接访问未发布的应用

以下代码如何在 Android 上运行

设置背景图片组成Column

视觉转换后获取文本

如何在 Jetpack Compose 中设置卡片高度

Jetpack Compose 重组竞争条件

如何在 Jetpack Compose 中为中心对齐设置动画?

为 AlertDialog 的消息文本设置自定义字体

在jetpack compose中将图像添加到脚手架顶部栏

Android活动系统导航栏 colored颜色 ?

如何在 Kotlin 的片段中制作图像列表?