android - 如何以编程方式更改操作栏菜单项的颜色

标签 android android-actionbar android-5.0-lollipop

我已经实现了一个应用程序,其中操作栏菜单项的背景颜色需要是动态的。我知道我们可以使用以下代码动态更改操作栏颜色。但它不适用于操作栏菜单项。请帮我解决这个问题。

ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR")); 

enter image description here

最佳答案

您说过背景颜色需要是动态的。几点:

  1. 根据文档 ( link ):

If you want to modify the options menu based on events that occur during the activity lifecycle, you can do so in the onPrepareOptionsMenu() method. This method passes you the Menu object as it currently exists so you can modify it, such as add, remove, or disable items. (Fragments also provide an onPrepareOptionsMenu() callback.)

  1. MenuInflater 忽略布局资源中尝试修改菜单外观(标题和图标除外)的标签。

因此,只要菜单项的外观由应用程序主题决定(可以应用于整个菜单而不是单个项目),我的建议是使用这样的预定义样式:

<style name="RedDropDownTheme" parent="AppBaseTheme">
    <item name="android:dropDownListViewStyle">@style/RedDropDownListView</item>
</style>

<style name="RedDropDownListView" parent="android:style/Widget.Holo.ListView.DropDown">
    <item name="android:background">@color/your_red_color</item>
</style>

如果之后需要更改颜色,则必须在共享首选项中保存新的颜色选择,调用 Activity 的 recreate() 方法,并在 Activity 的 onCreate 中应用新主题 (setTheme(R.style.different_color_style)) () 基于共享首选项中的值。

关于android - 如何以编程方式更改操作栏菜单项的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27938675/

相关文章:

java - 如何在android中的OpenGL java中将文本或图像放在3D立方体之上(对象用于增强目的)

android - Android 中的布局创建

android - Action 条显示 Action 的动画

android - Lollipop 上 Genymotion 中的 Google Play 服务(Android 5.0)

android - 图片从左向右无限滑动

android - CSS "display:block"不适用于 Chrome for Android

android - ActionBar 中图标的不同颜色

java - 使用 AppCompat 库支持 ActionBar

android - 如何在 Lollipop 上引用 ActionBar 标题 View

android - 使用不匹配的驱动程序版本启用 glsl 扩展时崩溃