【发布时间】:2013-04-08 19:24:08
【问题描述】:
如何改变操作栏中溢出图标的颜色?
(最右边的图标)
【问题讨论】:
-
您要更改设置图标(三个垂直点)还是每个项目的字体颜色?
-
重要的旁注:这不是设置按钮,而是溢出按钮。设置应该在溢出中。
-
Teovald,我更新了 OP
如何改变操作栏中溢出图标的颜色?
(最右边的图标)
【问题讨论】:
你可以使用这样的东西
<style name="MyTheme" parent="android:style/Theme.Holo.Light">
<item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
</style>
<style name="MyActionButtonOverflow" parent="android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/my_action_bTutton_overflow</item>
</style>
在你的AndroidManifest.xml
<application
android:theme="@style/MyTheme" >
如果你想改变actionBar的颜色 @style/MyActionBar
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- ActionBar styles -->
<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/app_theme_color</item>
<!-- Support library compatibility -->
<item name="background">@color/app_theme_color</item>
<item name="android:alwaysDrawnWithCache">true</item>
<item name="android:displayOptions">showTitle|showHome|homeAsUp</item>
<item name="android:icon">@android:color/transparent</item>
</style>
然后在您的AndroidManifest.xml 中,您需要在您的application 标记中引用这个。
android:theme="@style/CustomActionBarTheme"
【讨论】:
如果你只是想改变颜色,你可以简单地着色:
<style name="DotsDarkTheme" parent="@style/Widget.AppCompat.ActionButton.Overflow" >
<item name="android:tint">@color/yourColor</item>
</style>
然后以你的风格使用它:
<item name="actionOverflowButtonStyle">@style/DotsDarkTheme</item>
【讨论】:
<style name="DotsDarkTheme" parent="@style/Widget.AppCompat.ActionButton.Overflow" > <item name="android:tint">@android:color/black</item> </style> <style name="ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"> <item name="background">@color/colorPrimary</item> <item name="titleTextStyle">@style/ActionBarTitle</item> <item name="actionOverflowButtonStyle">@style/DotsDarkTheme</item> </style> 选项菜单图标仍然是白色的
如果您使用的是操作栏,请使用:
toolbar.getOverflowIcon().setColorFilter(Color.WHITE , PorterDuff.Mode.SRC_ATOP);
【讨论】:
还值得补充的是,如果您只是想将溢出按钮更改为浅色或深色以配合您的操作栏颜色,则无需指定自定义图标即可完成。
对于深色按钮颜色,请将您的主题设置为:
<style name="MyTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/MyTheme.ActionBar</item>
</style>
为浅色按钮添加 DarkActionBar:
<style name="MyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyTheme.ActionBar</item>
</style>
如果像我一样,您想要一个浅色按钮颜色,但又希望溢出菜单浅色,您可以执行以下操作:
<style name="MyTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyTheme.ActionBar</item>
<item name="android:actionBarWidgetTheme">@style/MyTheme.ActionBarWidget</item>
</style>
<!-- This helps the PopupMenu stick with Light theme while the ActionBar is in Dark theme -->
<style name="MyTheme.ActionBarWidget"
parent="android:Theme.Holo.Light">
<item name="android:popupMenuStyle">@android:style/Widget.Holo.Light.PopupMenu</item>
<item name="android:dropDownListViewStyle">@android:style/Widget.Holo.Light.ListView.DropDown</item>
</style>
【讨论】:
您可以在菜单项中使用自定义样式,如下所示
<item name="android:itemTextAppearance">@style/myCustomMenuTextApearance</item>
这样定义样式:
<style name="myCustomMenuTextApearance" parent="@android:style/TextAppearance.Widget.IconMenu.Item">
<item name="android:textColor">@android:color/primary_text_dark</item>
</style>
另见Change the background color of the options menu 和
Android: customize application's menu (e.g background color)
【讨论】:
在styles.xml 中创建以下样式,父级为ActionButton Overflow 小部件 然后在您用于显示工具栏的那个活动的样式中使用该主题。
Step-1) 为 actionButtonOverflow 创建样式
<style name="DotsDarkTheme" parent="@style/Widget.AppCompat.ActionButton.Overflow" >
<item name="android:tint">your color</item>
</style>
Step-2) 在使用 actionBar 的 Activity 中使用此样式
<style name="CustomMainActivityTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="actionOverflowButtonStyle">@style/DotsDarkTheme</item>
</style>
【讨论】: