更改弹出菜单背景颜色 [英] Change Popup menu background color

查看:33
本文介绍了更改弹出菜单背景颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

<块引用>

注意:我已经搜索了一个小时并尝试了所有已经提供的解决方案通过stackoverflow.

我正在研究主题叠加.我制作了一个示例应用程序,它会在单击操作栏图标时打开一个弹出菜单.这是我的 styles.xml

<!-- 基本应用程序主题.--><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- 在此处自定义您的主题.--><item name="colorPrimary">@color/colorPrimary</item><项目名称="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item></风格><style name="AppTheme.NoActionBar"><item name="windowActionBar">false</item><item name="windowNoTitle">true</item></风格><style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Light"><item name="android:textColorPrimary">@color/colorAccent</item></风格><style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Dark"><!-- 添加所有内容以查看哪个有效.--><item name="android:popupMenuStyle">@style/PopupMenu</item><item name="android:itemBackground">@color/colorAccent</item><item name="android:colorBackground">@color/colorAccent</item></风格><style name="PopupMenu" parent="@android:style/Widget.PopupMenu"><item name="android:popupBackground">@color/colorAccent</item></风格></资源>

这是我的工具栏样式.

 

这是代码.

 @Override公共布尔 onOptionsItemSelected(MenuItem item) {if(item.getItemId() == R.id.standard_menu){显示弹出菜单(项目);返回真;}返回 super.onOptionsItemSelected(item);}私人无效 showPopupMenu(MenuItem item) {PopupMenu p = new PopupMenu(this, findViewById(item.getItemId()));p.inflate(R.menu.pop_menu);p.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {@覆盖public boolean onMenuItemClick(MenuItem item) {Toast.makeText(MainActivity.this, "clicked.", Toast.LENGTH_SHORT).show();返回真;}});p.show();}

解决方案

我对接受的答案并不满意,因为它并没有真正解释为什么没有应用 OP 自定义弹出样式——而不仅仅是背景,还有文字颜色之类的东西——所以我做了我自己的实验.

请务必注意,Toolbar 创建的弹出窗口(当它有菜单项时)与使用 PopupMenu 显示自己的弹出窗口之间存在差异.这些由不同的主题属性控制.另外,请注意有两个 PopupMenu 类:android.widget.PopupMenuandroid.support.v7.widget.PopupMenu.

您需要为您显式显示的 PopupMenu 设置样式的主题属性是 android:popupMenuStylepopupMenuStyle.您有几个选项可以正确应用您的自定义样式:

(1)在活动(或应用)的主题中使用android:popupMenuStyle