Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change ActionBar's action text color using AppCompat

I am trying to change the text color of a action menu item on the action bar. Using app compat. Also the overflow icon doesnt change too. Here is my custom styled styles.xml files.

res/values/styles.xml

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
    <!-- Setting values in the default namespace affects API levels 7-13 -->
    <item name="actionBarStyle">@style/MyStyledActionBar</item>
</style>

<style name="MyStyledActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <!-- Setting values in the default namespace affects API levels 7-13 -->
    <item name="background">@drawable/bg_action_bar</item>
    <item name="titleTextStyle">@style/MyActionBarTitleText</item>
    <item name="actionMenuTextAppearance">@style/MyActionBarMenuText</item>
    <item name="actionMenuTextColor">@style/MyActionBarMenuText</item>
    <item name="actionOverflowButtonStyle">@style/MyActionButtonOverFlow</item>
</style>

<style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/font_half_white</item>
</style>

<style name="MyActionBarMenuText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu">
    <item name="android:textColor">@color/font_half_white</item>
</style>

<style name="MyActionButtonOverFlow" parent="@style/Widget.AppCompat.Light.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_action_search</item>
</style>

res/values-14/styles.xml

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
    <!-- Setting values in the android namespace affects API levels 14+ -->
    <item name="android:actionBarStyle">@style/MyStyledActionBar</item>
</style>

<style name="MyStyledActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <!-- Setting values in the android namespace affects API levels 14+ -->
    <item name="android:background">@drawable/bg_action_bar</item>
    <item name="android:titleTextStyle">@style/MyActionBarTitleText</item>
    <item name="android:actionMenuTextAppearance">@style/MyActionBarMenuText</item>
    <item name="android:actionMenuTextColor">@style/MyActionBarMenuText</item>
    <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverFlow</item>
</style>

<style name="MyActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/font_half_white</item>
</style>

<style name="MyActionBarMenuText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Menu">
    <item name="android:textColor">@color/font_half_white</item>
</style>

<style name="MyActionButtonOverFlow" parent="@style/Widget.AppCompat.Light.Base.ActionButton.Overflow">
    <item name="android:src">@drawable/ic_action_search</item>
</style>

res/colors.xml #F3F3F3

The text color still black doesnt change to white. Has anybody successfully changed the action menu text color. Please suggest some insights. I am testing on 4.4 Nexus5 device.

enter image description here

like image 831
Mani Avatar asked Mar 26 '14 04:03

Mani


People also ask

How to change the color of action bar in an Android app?

In this article, you will learn how to change the colour of the Action Bar in an Android App. There are two ways to change color. By changing styles.xml file: Just go to res/values/styles.xml file. edit the xml file to change the color of action bar. Code for styles.xml is given below.

How can I change the action bar style?

If you want to style the action bar to better fit your product brand, you can easily do so using Android's style and themeresources. Android includes a few built-in activity themes that include "dark" or "light" action bar styles. You can also extend these themes to further customize the look for your action bar.

What is android action bar style?

Android Action Bar Style Generator The action bar provides your users a familiar and predictable way to perform actions and navigate your app, but that doesn't mean it needs to look exactly the same as it does in other apps.

What is appcompat edittext in Android?

How to Customize AppCompat EditText in Android? - GeeksforGeeks How to Customize AppCompat EditText in Android? The EditText is one of the important UI element which takes the data as input from the user.


2 Answers

Use

<item name="android:actionMenuTextColor">@color/font_half_white</item>
// added style directly 

Instead of

<item name="android:actionMenuTextColor">@style/MyActionButtonStyle</item>

in res/values-14/styles.xml

In res/values/styles.xml

<item name="actionMenuTextColor">@color/font_half_white</item>

I used a Red Color for testing. See the Action menu Item Home that is red in the snap

enter image description here

Edit:

Full Code

In res/values-14/styles.xml

<resources>

    <!--
        Base application theme for API 14+. This theme completely replaces
        AppBaseTheme from BOTH res/values/styles.xml and
        res/values-v11/styles.xml on API 14+ devices.
    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- API 14 theme customizations can go here. -->
            <item name="android:actionMenuTextColor">@color/red</item>
    </style>

</resources>

Then in res/values/stles.xml

  <resources>
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <!-- API 11 theme customizations can go here. -->
         <item name="actionMenuTextColor">@color/red</item>
    </style>

</resources>

In manifest

android:theme="@style/AppBaseTheme" >

Another snap

enter image description here

like image 130
Raghunandan Avatar answered Oct 15 '22 02:10

Raghunandan


You can use this to change the text of the Action Bar irrespective of your appcompat version.Give the desired color's hex code and add this in the onCreate().

actionBar.setTitle(Html.fromHtml("<font color='#ff0000'>Some Title</font>"));
like image 26
onexf Avatar answered Oct 15 '22 01:10

onexf