我使用的是从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 Room中使用@Relation多对一查询

try 用Jetpack Compose理解视图模型和导航

在Android 14/SDK 34中使用RegisterReceiver的正确方式是什么?

BroadCastReceiver的onReceive方法中的Intent上的Extras为空

当按下通知时,将Android应用程序置于前台

AndroidX Media3 迁移指南

从不可组合回调打开可组合屏幕

在模块 jetified-kotlin-stdlib-1.8.10 中发现重复的类 kotlin.random.jdk8,带有启动基准

如何在 Jetpack Compose 中创建无限pager

Android apk 不工作

Jetpack Compose UI - 在 AlertDialog 中单击时按钮宽度会发生变化

如何在行/列/卡片 compose 中添加左边框

Android Jetpack Compose - 每次文本字段值更改时,可组合函数都会重新组合

在 Kotlin 客户端应用程序中发送 FCM 推送通知 - Firebase 云消息传递

如何将房间数据库导出到 .CSV

Android - 水平(从右到左)圆形背景 colored颜色 过渡

Kotlin Compose 全局页脚视图

CenterAlignedTopAppBar 滚动行为:未为参数状态传递值

基线配置文件 x R8/Proguard

Android Studio (Kotlin):无法启动活动