菜单图标不显示在操作栏上

时间:2014-05-13 16:14:04

标签: android android-actionbar

Android Studio 0.5.8

您好,

由于某种原因,图标永远不会显示在ActionBar上,我使用了ifRoom | withText的组合,但仍然没有显示。我也试过在Landscape中旋转。我正在使用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);
    }

以下是截图: enter image description here

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

我也试过使用以下内容,但也没有工作:

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

非常感谢任何建议,

3 个答案:

答案 0 :(得分:13)

我曾经遇到过这个问题。试试这个:

<?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>

我不知道为什么有必要同时使用这两种方法,但是出于某种原因我已经为它修好了。

答案 1 :(得分:2)

您正在使用Android Studio,如here by blackfizz所述:&#34; lint检查发现您已通过gradle导入了appcompat库,并认为您应该使用ActionBarActivity,因为您的库导入。这就是你收到错误的原因。&#34;

我遇到了确切的问题。 Android Studio给了我错误&#34;应该使用带有xmlns的appcompat库的app:showAsAction:app =&#34; schemas.android.com/apk/res-auto"。如果我按照建议更改了我的XML,那么actionBar中的菜单就会消失在溢出中。如果我忽略了错误,我得到了预期的行为,但错误仍然困扰着我。

真正的罪魁祸首是build.gradle文件中的以下几行:

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

导入了appcompat库,并造成了所有麻烦。由于我只针对Android 4.4及以上,我能够删除这两行。问题解决了!

在阅读blackfizz的答案之前,我浪费了几个小时来弄明白自己,所以我在这里发布我的答案,希望能在几个小时内拯救其他开发人员。

遇到类似情况时,请先检查build.gradle,看看是否无意中导入了appcompat库。

答案 2 :(得分:0)

您需要使用Theme.Holo样式而不是AppCompat。 为此,只需在AndroidManifest.xml中更改应用程序的样式即可 如果您收到错误:

  

应该使用带有xmlns的appcompat库的app:showAsAction:app =&#34; schemas.android.com/apk/res-auto

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

在menu.xml中,不要写:

app:showAsAction="ifRoom"

但是写

android:showAsAction="ifRoom"