是否可以在PopupMenu中显示图标?

问题描述 投票:49回答:11

我真的很喜欢3.0中提供的新PopupMenu,但是我不能在其中的菜单项旁边显示任何图标。我正在从下面的.xml扩展菜单:

<item android:id="@+id/menu_delete_product"
    android:icon="@drawable/sym_action_add"
    android:title="delete"
    android:showAsAction="ifRoom|withText" />

<item android:id="@+id/menu_modify_product"
    android:icon="@drawable/sym_action_add"
    android:title="modify"
    android:showAsAction="ifRoom|withText" />

<item android:id="@+id/menu_product_details"
    android:icon="@drawable/sym_action_add"
    android:title="details"
    android:showAsAction="ifRoom|withText" />

使用此代码:

image.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        PopupMenu pop = new PopupMenu(getActivity(), v);
        pop.getMenuInflater().inflate(R.menu.shelves_details_menu, pop.getMenu());
        pop.show();
    }
});

我无法显示图标,我丢失了什么吗?

android android-3.0-honeycomb
11个回答
29
投票

[如果您愿意冒险,请查看Google的PopupMenu源代码。创建您自己的类,即MyPopupMenu,该类与Google的PopupMenu类相同,但要稍作更改。


1
投票

沿着反射线使用,无需使用MenuPopupHelper,您可以添加


0
投票

无法完全自定义PopupMenu。在下面,您找到了一种通用的解决方案,可以通过自定义布局使PopupMenu可自定义。有了它,您可以对不同的布局进行更多的实验。干杯。


69
投票

对Gaelan Bolger提供的解决方案的贡献。如果收到“ IllegalAccessException:不允许访问字段”,请使用此代码。


19
投票

我能够使用反射显示图标。它可能不是最优雅的解决方案,但它可以工作。


17
投票

我们可以使用子菜单模型。因此,我们不需要编写用于显示弹出菜单的方法,它将自动显示。看看:


11
投票

在使用方法popup.show()之前,创建一个MenuPopupHelper实例并调用方法setForceShowIcon(true),像这样


8
投票

我发现的最简单的方法是使用MenuBuilderMenuPopupHelper


6
投票

我使用MenuPopupHelper.setForceShowIcon(true)找到了本机解决方案。


3
投票

PopupMenu将不显示图标。您可以使用ActionBar。


2
投票

上面的某些解决方案将与反射黑客一起使用,

© www.soinside.com 2019 - 2024. All rights reserved.