我已经实现了一个应用程序,其中操作栏菜单项背景颜色需要是动态的。我知道我们可以使用以下代码动态更改操作栏颜色。但它不适用于操作栏菜单项。请帮帮我。
ActionBar bar = getActionBar();
bar.setBackgroundDrawable(new ColorDrawable("COLOR"));
答案 0 :(得分:1)
你说过背景颜色需要是动态的。几点:
如果要根据活动生命周期中发生的事件修改选项菜单,可以在onPrepareOptionsMenu()方法中执行此操作。此方法会将Menu对象传递给当前存在,以便您可以对其进行修改,例如添加,删除或禁用项目。 (片段还提供onPrepareOptionsMenu()回调。)
因此,只要菜单项的外观由应用主题(可以应用于整个菜单而不是单个项目)决定,我的建议是使用这样的预定义样式:
<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)) ()基于共享首选项中的值。
答案 1 :(得分:0)
我认为最简单的解决方案是将drawable设置为操作栏的背景,您可以创建一个简单的形状。然后动态更改可绘制的背景。
Here is how to dynamically add a drawable as background
Here how to dynamically change drawable color.
希望这会有所帮助,问候 何