2014/10/15

[Android]ActionBar のタイトルの文字色を変更する

ActionBar のタイトルの文字色を変えるメソッドはないので
あまり変えてやろうと思うこともないかと思いますが
気まぐれに文字色を変えたくなった時のためにメモしておきます。

Theme でActionBar のタイトルの文字色を変更する

普通の方法ですが、動的に変更することができません。
<resources>

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

    <style name="AppTheme.ActionBarStyle" parent="Widget.AppCompat.Light.ActionBar">
        <item name="titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
    </style>

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

</resources>
<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/AppTheme.ActionBarStyle</item>
    </style>

    <style name="AppTheme.ActionBarStyle" parent="Widget.AppCompat.ActionBar">
        <item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
    </style>

</resources>

Programmatically

String title = getResources().getString(R.string.title);
int titleColor = getResources().getColor(R.color.titleColor);
String htmlColor = String.format(Locale.US, "#%06X", (0xFFFFFF & Color.argb(0, Color.red(titleColor), Color.green(titleColor), Color.blue(titleColor))));
String titleHtml = "<font color=\"" + htmlColor +  "\">" + title + "</font>";
getSupportActionBar().setTitle(Html.fromHtml(titleHtml));

Html とかウケる。こんな方法があったとは。

参考
android - ActionBar text color - Stack Overflow

タグ(RSS)