首先我读过Change color of the overflow button on action bar但是 我无法让它发挥作用。
我只想拥有一个简单的主题:动作栏背景蓝色,按钮和文字白色。对于我所拥有的列表视图,我希望它们是相反的:白色背景和蓝色文本。如果有一个简单的方法来实现这一点,请告诉我。 我尝试使用样式设置文本颜色,但我无法将文本和按钮设置为不同的颜色,因此我尝试设置溢出可绘制,为了测试目的,我将点设为红色,但看不到任何效果。
<!-- Application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="Widget.AppCompat.ActionBar">
<item name="background">@color/background_blue</item>
<item name="titleTextStyle">@style/AppTheme.ActionBar.Title</item>
<item name="actionOverflowButtonStyle">@style/AppTheme.ActionButton.Overflow</item>
</style>
<style name="AppTheme.ActionBar.Title" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
</style>
<style name="AppTheme.ActionButton.Overflow" parent="@style/Widget.AppCompat.ActionButton.Overflow">
<item name="android:src">@drawable/abc_ic_menu_overflow_button</item>
</style>
虽然我看到了
显然没有使用红色按钮。
我能够使用android:textColorPrimary属性但是有不良副作用。
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:textColorPrimary">@color/white</item>
<item name="actionBarStyle">@style/ActionBarStyle</item>
</style>
<style name="ActionBarStyle" parent="Widget.AppCompat.ActionBar">
<item name="background">@color/background_blue</item>
<item name="titleTextStyle">@style/AppTheme.ActionBar.Title</item>
</style>
<style name="AppTheme.ActionBar.Title" parent="TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/white</item>
</style>
但是因为我希望我的列表有白色背景,所以我最终无法看到一些文字,因为文字和背景都是白色的。
谢谢!
答案 0 :(得分:22)
我找到了另一种方法,不需要替换图像!
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="actionBarTheme">@style/AppTheme.ActionBarTheme</item> <!-- used for the back arrow on the action bar -->
</style>
<style name="AppTheme.ActionBarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- THIS is where you can color the arrow and the overflow button! -->
<item name="colorControlNormal">@color/splash_title</item> <!-- sets the color for the back arrow -->
<item name="actionOverflowButtonStyle">@style/overflowButtonStyle</item> <!-- sets the style for the overflow button -->
</style>
<!-- This style is where you define the tint color of your overflow menu button -->
<style name="actionOverflowButtonStyle" parent="@style/Widget.AppCompat.ActionButton.Overflow">
<item name="android:tint">@color/white</item>
</style>
答案 1 :(得分:12)
android:textColorSecondary 对我不起作用。 所以我尝试着色溢出样式:
<style name="DotsDarkTheme" parent="@style/Widget.AppCompat.ActionButton.Overflow" >
<item name="android:tint">@color/yourLightColor</item>
</style>
然后以你的风格使用它:
<style name="YourDarkAppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
... your appTheme
<item name="actionOverflowButtonStyle">@style/DotsDarkTheme</item>
</style>
(我已经在这个帖子中回答:Change the action bar settings icon color 但这是我在搜索答案时第一次在谷歌上获得成功)
答案 2 :(得分:6)
有一种方法可以更容易地解决它,例如,如果我们想要标题字母的白色和工具栏的图标,我们可以这样做:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
android:theme="@style/MainMenu"
app:popupTheme="@style/android:Theme.Holo.Light"/>
在styles.xml文件中我们可以这样做:
<style name="MainMenu" parent="Theme.AppCompat.NoActionBar">
<item name="android:textColorSecondary">@color/white</item>
</style>
此android:textColorSecondary
更改工具栏中图标的颜色。
答案 3 :(得分:4)
在主题中添加actionOverflowButtonStyle。
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="actionBarStyle">@style/ActionBarStyle</item>
<item name="actionOverflowButtonStyle">@style/AppTheme.ActionButton.Overflow</item>
</style>
它完成了。