18

First off I have read Change color of the overflow button on action bar but I'm not able to get it to work.

I just want to have a simple theme: Action bar background blue and the buttons and text white. For the list views that I have I want them to be the inverse: white background and blue text. If there is a simple way to achieve this please let me know. I have tried setting text color using a style but I cannot get the text and the buttons to be different colors so I tried setting the overflow drawable and for testing purposes I made the dots red but don't see any effect.

    <!-- 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 The overflow button that I'm using for testing

While what I see

What I see

which clearly is not using the red buttons.

I was able to use the android:textColorPrimary attribute but that has undesirable side effects.

    <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

but then since I want a white background for my lists I end up not being able to see some text since the text and background are both white.

Thanks!

Community
  • 1
  • 1
bitrock
  • 1,254
  • 1
  • 12
  • 17

4 Answers4

41

I found another way to do it which does not require replacing the image!

<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/actionOverflowButtonStyle</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>
J.F.Dimdim
  • 27
  • 6
bitrock
  • 1,254
  • 1
  • 12
  • 17
25

android:textColorSecondary did not work for me. So I tried tinting the overflow style:

<style name="DotsDarkTheme" parent="@style/Widget.AppCompat.ActionButton.Overflow" >
    <item name="android:tint">@color/yourLightColor</item>
</style>

and then use it in your style:

  <style name="YourDarkAppTheme">

    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>

    ... your appTheme


    <item name="actionOverflowButtonStyle">@style/DotsDarkTheme</item>


  </style>

(I already answered in this thread: Change the action bar settings icon color But this was my first hit on Google when searching for an answer)

Mike Birkhoff
  • 505
  • 5
  • 10
7

There is a way that can solve it easier, for example if we want white color of title letter and icons of a toolbar, we can do this:

<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"/>

and in styles.xml file we can do this:

<style name="MainMenu" parent="Theme.AppCompat.NoActionBar">
    <item name="android:textColorSecondary">@color/white</item>
</style>

this android:textColorSecondary changes the color of icons in toolbar.

Cristian Hoyos
  • 1,245
  • 1
  • 9
  • 16
5

Add actionOverflowButtonStyle in your main theme.

<style name="AppTheme" parent="Theme.AppCompat.Light">
 <item name="actionBarStyle">@style/ActionBarStyle</item>
 <item name="actionOverflowButtonStyle">@style/AppTheme.ActionButton.Overflow</item>
</style>

It's Done.

Jay Rathod
  • 11,131
  • 6
  • 34
  • 58