androidpopup菜单文字颜色(AppCompat)

我需要更改popuo菜单的文本颜色,但是我找不到任何方法来执行此操作,我可以更改popmenu的背景而不是文本,我以这种方式编辑style.xml:

  @style/MyPopupMenu @style/myPopupMenuTextAppearanceLarge @style/myPopupMenuTextAppearanceSmall   #0F213F   #ffffff   #ffffff  

哪里出错了?

Solutions Collecting From Web of "androidpopup菜单文字颜色(AppCompat)"

 @style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large @style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small 

我认为您使用的是TextAppearance.AppCompat.Base.Widget.PopupMenu。 这是错误,您正在使用另一个不响应当前样式的父级。

你必须使用:

TextAppearance.AppCompat.Light.Widget.PopupMenu。

在styles.xml中

  

并添加AppTheme

 @style/itemTextStyle.AppTheme 

color_item_popup.xml

      

在styles.xml中:

  

在java中:

Context wrapper = new ContextThemeWrapper(getContext(), R.style.PopupMenu); final PopupMenu popupMenu = new PopupMenu(wrapper, view);

显然,您可以用自己的方式自定义PopupMenu。 它很简单。 但首先你需要照顾一件非常重要的事情。

PopupMenu是这样创建的,

 PopupMenu popupMenu = new PopupMenu(context, anchorView); 

现在,“背景”在造型中起着非常重要的作用。 PopupMenu的样式取决于您传递的上下文的样式。 所以要非常小心。 我浪费了差不多一半时间搞清楚这一点。

如果你在一个片段中,只需传递“getActivity()”就可以了。

PopupMenu项目的样式

只需覆盖您的风格中的以下项目,

 @style/myPopupMenuTextAppearanceLarge @style/myPopupMenuTextAppearanceLarge @style/myPopupMenuTextAppearanceSmall @style/myPopupMenuTextAppearanceSmall 

并根据需要自定义文本外观,

   

如果要更改PopupMenu的背景,请执行此操作

 @style/myPopupMenuStyle @style/myPopupMenuStyle 

高级造型

PopupMenu项目默认不支持显示图标。 但显示图标可以使它看起来更好。 我建议尝试一下。

要实现这一点,只需在您的活动中添加以下代码,您就可以了,

  @Override public boolean onMenuOpened(int featureId, Menu menu) { if (featureId == Window.FEATURE_ACTION_BAR && menu != null) { if (menu.getClass().getSimpleName().equals("MenuBuilder")) { try { Method m = menu.getClass().getDeclaredMethod( "setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch (NoSuchMethodException e) { Log.e("tag", "onMenuOpened", e); } catch (Exception e) { throw new RuntimeException(e); } } } return super.onMenuOpened(featureId, menu); } 

希望能帮助到你。