如何更改操作栏溢出按钮颜色

时间:2016-03-11 05:08:21

标签: android

首先我读过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>

我正在用于测试的溢出按钮 The overflow button that I'm using for testing

虽然我看到了

What I see

显然没有使用红色按钮。

我能够使用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>

enter image description here

但是因为我希望我的列表有白色背景,所以我最终无法看到一些文字,因为文字和背景都是白色的。

谢谢!

4 个答案:

答案 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>

它完成了。