当前位置: 首页 > 知识库问答 >
问题:

操作栏上未显示菜单图标

薄欣怿
2023-03-14
Android Studio 0.5.8

你好

由于某些原因,该图标从未显示在操作栏上,我使用了ifRoom |与text的组合,但仍然没有显示。我也尝试过在风景中旋转。我正在使用genymotion 4.4.2

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:title="@string/new_crime"
        android:id="@+id/menu_item_new_crime"
        android:icon="@drawable/ic_action_new"
        app:showAsAction="always"/>
</menu>

我正在膨胀菜单中的一个片段:

 @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.fragment_crime_list, menu);
    }

我在纵向和横向模式下尝试了硬件nexus5,但没有图标。

我也尝试过使用以下方法,但也不起作用:

android:icon="@android:drawable/ic_menu_add"

非常感谢任何建议,

共有3个答案

龚沛
2023-03-14

您需要使用主题。Holo风格,而非AppCompat。为此,只需在AndroidManifest中更改应用程序的样式。xml如果出现错误:

应将app:showAsAction与appcompat库一起使用xmlns:app=“schemas.android.com/apk/res-auto”

然后,您需要更改模块设置:
1-右键单击应用程序并选择打开模块设置(或只需按F4)
2-在依赖项中,添加比V7更新的支持模块(例如com.android.support:support-v13:22.0.0)

在菜单中。xml,不要写入:

app:showAsAction="ifRoom"

但是写

android:showAsAction="ifRoom"
袁恩
2023-03-14

正如blackfizz在这里解释的那样,您使用的是Android Studio:“lint检查发现您已经通过gradle导入了appcompat库,它认为您应该使用ActionBarActivity,因为您的库导入了。这就是为什么您会出现错误。”

我遇到了确切的问题。Android Studio给了我一个错误:“应该将app:showAsAction与带有xmlns:app=“架构”的appcompat库一起使用。Androidcom/apk/res auto”。如果我按照建议更改了XML,操作栏中的菜单就会消失在溢出中。如果我忽略了错误,我会得到预期的行为,但错误仍然困扰着我。

真正的罪魁祸首是文件构建中的以下几行。格拉德尔:

dependencies {
    …
    compile 'com.android.support:appcompat-v7:22.1.1'
    compile 'com.android.support:support-v4:22.1.1'
}

它导入了appcompat库,并引发了所有的麻烦。因为我只针对Android 4.4及以上版本,所以我能够删除这两行。问题解决了!

在阅读Blackfizz的答案之前,我浪费了几个小时自己弄清楚,所以我在这里发布我的答案,希望能为其他开发人员节省几个小时。

当您遇到类似情况时,首先检查您的构建。gradle查看是否无意中导入了appcompat库。

权弘新
2023-03-14

我自己也曾遇到过这个问题。尝试以下操作:

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:title="@string/new_crime"
        android:id="@+id/menu_item_new_crime"
        android:icon="@drawable/ic_action_new"
        android:showAsAction="always"
        app:showAsAction="always"/>
</menu>

我不知道为什么两者都有必要,但出于某种原因,这为我解决了问题。

 类似资料:
  • 我的问题是一个热门问题,我阅读并尝试了很多相关帖子,但我没有实现预期的结果,显示菜单。我还没有找到正确的解决方案。 我的应用程序可以在Android 4 . 2 . 2版本上完美运行。(版本代码17)我在Galaxy Duos手机上试用过。 我使用Android版本7,0(版本代码24)我尝试了更多目标SDK版本的变体,具有8,19,24,25并且没有目标SDK规范。 以下是一些相关的部分 -盖德

  • 我有旧式菜单应用程序。在改变主题到全息和切换目标SDK版本到14后,软菜单按钮消失了(这是好的),但使用菜单按钮在操作栏显示文本菜单大部分离屏幕,你可以看到在附上的图像。你有什么办法解决这个问题吗? 我已经解决了。清单参数中有问题: 在改变了任何否认为真之后,这个问题就消失了。

  • 我已经在我的 JFrame 中添加了一个自定义 JPane 和一个自定义 JMenuBar。JPane显示得很好,但JMenuBar不是。我已经在不同的类中定义了框架和菜单栏 下面是frame类:public类pixel frame {//这个框架将保存用于艺术创作的a pixelPane。这也将包含一个菜单栏,在另一个文件中定义。pixelPane编辑区域;pixelMenuBar菜单栏;pub

  • ap.showActionSheet(OPTION, CALLBACK) 显示操作菜单。 OPTION 参数说明 名称 类型 必填 描述 title String 否 菜单标题 items String Array 是 菜单按钮的文字数组 cancelButtonText String 否 取消按钮文案,默认为「取消」 CALLBACK 参数说明 点击菜单按钮时调用 名称 类型 描述 index

  • 我正在用Sherlock设置一个带有3个项目/图标的动作栏。在ICS模拟器上运行时,我只能看到2个图标。而且:没有溢出菜单(那些3点图标)!我只会在按下手机的功能表按钮时看到第三个图标。 我是否必须强制溢出图标,如果是,我如何才能这样做?

  • 我有一个标准的Android操作栏(我没有使用兼容性库),带有SearchView和一些纯文本菜单项。我希望始终展开SearchView,并在溢出菜单中显示其余项目。到目前为止,我的代码在平板电脑和Nexus 5的横向模式下运行良好,但当手机处于纵向模式时,不会显示溢出菜单。如果我将collapseActionView属性添加到SearchView,溢出菜单将正确显示,但我希望保持搜索小部件完全展