如何在Android中的MenuItem上显示一个图标来指示子菜单

时间:2014-05-19 16:22:29

标签: android menuitem

我知道这里发布的答案:

icon in menu not showing in android

然而,问题仍然存在:Google如何让我指出MenuItem有更多'更多'当显示带有如下子菜单的弹出菜单时:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:title="Genres" android:icon="@android:drawable/ic_menu_more">
        <menu xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:id="@+id/genredrama" android:title="Drama" />
            <item android:id="@+id/genrefamily" android:title="Family" />
            <item android:id="@+id/genrehorror" android:title="Horror" />   
        </menu>
   </item>
<item  android:title="All" />
<item android:title="Top Picks" />
<item android:title="Best" />   
</menu>

如何制作图标:

ic_menu_more

出现在Genres MenuItem中?我知道这是谷歌的设计决定,但是现在用什么方法表明menutItem有一个子菜单?

2 个答案:

答案 0 :(得分:0)

我认为您必须在商品标记中设置此属性:

android:showAsAction="always" //this will force to show menu item

答案 1 :(得分:0)

我通过修改此答案中的解决方案找到了解决此问题的方法: https://stackoverflow.com/a/22668665/3612509

以下代码根据需要显示“流派”菜单旁边的图标:

PopupMenu popupMenu = new PopupMenu(this, view);
        popupMenu.inflate(R.menu.menu_movies);        

        try{
            Method m = popupMenu.getMenu().getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
            m.setAccessible(true);
            m.invoke(popupMenu.getMenu(), true);
        }
        catch(NoSuchMethodException e){
            Log.e("DEMO", "onMenuOpened", e);
        }
        catch(Exception e){
            throw new RuntimeException(e);
        }