Android工具栏弹出菜单未显示图标

问题描述 投票:2回答:4

我正在尝试为工具栏显示一个包含文本和图标的下拉菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/menu_add"
        android:title="@string/menu.add"
        android:icon="@drawable/ic_add_black_24dp"
        app:showAsAction="always" />

    <item
        android:id="@+id/menu_edit"
        android:title="@string/menu.edit"
        android:icon="@drawable/ic_create_black_24dp"
        app:showAsAction="never" />

</menu>

menu_add确实在工具栏上带有图标显示,但是menu_edit仅显示不带图标的文本。

此答案:https://stackoverflow.com/a/19750717/197127表示Google已将其删除,但并未提及您如何覆盖它。

编辑

我还需要设备的“菜单”按钮来显示相同​​的菜单。

android android-menu android-toolbar
4个回答
3
投票

它在android支持的v7版本上不起作用,但是您可以通过稍加修改来进行调整。下面的代码对我有用

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">

<item
    android:id="@+id/action_settings"
    android:icon="@drawable/abc_ic_menu_moreoverflow_mtrl_alpha"
    android:title="@string/action_settings"
    app:showAsAction="always">
    <menu>

        <item
            android:id="@+id/action_rate"
            android:icon="@drawable/ic_grade_black_24dp"
            android:orderInCategory="100"
            android:title="@string/action_rate"
            app:showAsAction="never" />
        <item
            android:id="@+id/action_share"
            android:icon="@drawable/ic_share_black_24dp"
            android:orderInCategory="101"
            android:title="@string/action_share"
            app:showAsAction="never" />
        <item
            android:id="@+id/action_enquiry"
            android:icon="@drawable/ic_message_black_24dp"
            android:orderInCategory="102"
            android:title="@string/action_enquiry"
            app:showAsAction="never" />
        <item
            android:id="@+id/action_disclaimer"
            android:icon="@drawable/ic_info_black_24dp"
            android:orderInCategory="103"
            android:title="@string/action_disclaimer"
            app:showAsAction="never" />
    </menu>
</item>


2
投票

是的,它不会显示在新版本的支持库中,但是您可以通过添加子菜单来解决问题。 (您可以同时通过xml和代码添加它)。像这样:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_settings"
        android:icon="@drawable/abc_ic_menu_moreoverflow_mtrl_alpha"
        android:title="@string/action_settings"
        app:showAsAction="always">
        <menu>
            <item
                android:icon="@drawable/ic_event"
                android:title="@string/action_settings"
                app:showAsAction="always" />
            <item
                android:icon="@drawable/ic_event"
                android:title="@string/action_settings"
                app:showAsAction="always" />
        </menu>
    </item>
</menu>

希望它有帮助:)编辑:查看以上代码的快照:

“菜单” => “菜单打开”


1
投票

我找到了此解决方案:https://stackoverflow.com/a/30337653/197127。基本上,覆盖方法并不会破坏设备菜单按钮或溢出。谢谢大家。


0
投票

尝试此

 MenuPopupHelper menuHelper = new MenuPopupHelper(getContext(), (MenuBuilder) 
 popupmenu.getMenu(), button);
 menuHelper.setForceShowIcon(true);
 menuHelper.show();

为我工作。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.