Android更改popupmenu背景并显示图标

Posted l_____py

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android更改popupmenu背景并显示图标相关的知识,希望对你有一定的参考价值。

似乎popupmenu是无法单独设置style的,好像是由context决定的,前几天需要设置style,找了很久才找一一个办法,似乎是通过 ContextThemeWrapper 包装一个 Context 然后把 Context 作为参数传递给popupmenu的构造函数

java代码如下

/**************************************************************************/
       Context wrapper = new ContextThemeWrapper(this, R.style.MyPopupStyle);
/**************************************************************************/

       PopupMenu popupMenu = new PopupMenu(wrapper, view);
       popupMenu.getMenuInflater().inflate(R.menu.user_main_toolbar_add_items, popupMenu.getMenu());
       popupMenu.show();

  

style文件如下

<style name="MyPopupStyle" parent="Widget.AppCompat.PopupMenu">
        <item name="android:itemBackground">@drawable/toolbar_item_selector</item>
        <item name="android:textColor">@color/whitesmoke</item>
</style>

  

记得当时使用background属性是无效的,改成了itembackground才有了效果

而且为了使popupmenu可以显示icon,找了一种方法,并没有去查原因,仅仅是用了,代码如下

/**************************************************************************/
     Context wrapper = new ContextThemeWrapper(this, R.style.MyPopupStyle);
/**************************************************************************/

     PopupMenu menu = new PopupMenu(wrapper, view);
     menu.inflate(R.menu.user_main_toolbar_add_items);

     MenuPopupHelper menuHelper = new MenuPopupHelper(wrapper, (MenuBuilder) menu.getMenu(), view);
     menuHelper.setForceShowIcon(true);
     menuHelper.show();

  

而且官方文档好像没搜到这个类,谷歌第一条是源代码,里面有各个方法的说明,包括setForceShowIcon,

本文本来只用来自己参考的,不过可能会有人看到,还是贴出链接,可以看下

MenuPopupHelper。java

 

以上是关于Android更改popupmenu背景并显示图标的主要内容,如果未能解决你的问题,请参考以下文章

样式 PopupMenu Android

Android如何在每个listview列表项上添加图标并更改文本颜色、背景颜色

Android 仿微信长按列表弹出PopupMenu菜单栏

XE下显示托盘图标(TrayIcon)

当背景颜色为白色时,Android 通知图标颜色不会更改

android如何在像GMail这样的webview中显示PopupMenu