309

ActionBar のテキストの色を変更するにはどうすればよいですか? Holo Light テーマを継承しました。ActionBar の背景を変更できますが、テキストの色を変更するために調整する属性がわかりません。


OK、属性 android:textColorPrimary を使用してテキストの色を変更できますが、ActionBar ボタンでオーバーフローが発生したときに表示されるドロップダウン メニューのテキストの色も変更されます。これらのドロップダウンメニュー/リストの色を変更する方法はありますか?

4

27 に答える 27

453

わかりました、私はより良い方法を見つけました。タイトルの色だけ変更できるようになりました。サブタイトルを微調整することもできます。

ここに私のstyles.xmlがあります:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
  </style>

  <style name="MyTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
  </style>

  <style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@color/red</item>
  </style>
</resources>
于 2011-05-04T10:08:34.923 に答える
101

ActionBar( SherlockCompat、およびNative )の任意のフレーバーでうまく機能する方法を見つけました。

htmlを使用してタイトルを設定し、テキストの色を指定するだけです。たとえば、ActionBarのテキストの色を赤に設定するには、次のようにします。

getActionBar()/* or getSupportActionBar() */.setTitle(Html.fromHtml("<font color=\"red\">" + getString(R.string.app_name) + "</font>"));

#FF0000単語の代わりに赤い 16 進コードを使用することもできますred。これに問題がある場合は、Android Html.fromHtml(String) does not work for <font color='#'>text</font>を参照してください。


さらに、カラー リソースを使用する場合は、このコードを使用して正しい HEX 文字列を取得し、必要に応じてアルファを削除できます (フォントタグはアルファをサポートしていません)。

int orange = getResources().getColor(R.color.orange);
String htmlColor = String.format(Locale.US, "#%06X", (0xFFFFFF & Color.argb(0, Color.red(orange), Color.green(orange), Color.blue(orange))));
于 2013-10-25T14:44:12.607 に答える
95

私はあなたと同じ問題を抱えていました.Holo.Lightテーマですが、ActionBarの色をスタイルしたかったので、テキストの色とタイトルとメニューの両方を変更する必要がありました. 最後に、私は git ハブに行き、正しいスタイルが見つかるまでソース コードを調べました。

<?xml version="1.0" encoding="utf-8"?>
<!-- For honeycomb and up -->
<resources>

    <style name="myTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/myTheme.ActionBar</item>
        <item name="android:actionMenuTextColor">@color/actionBarText</item>
    </style>

    <style name="myTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">@drawable/actionbarbground</item>
        <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item>
    </style>

    <style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance">
        <item name="android:textColor">@color/actionBarText</item>
    </style>

</resources>

だから今、あなたがしなければならないのは、あなたが望むもの@color/actionBarTextを設定@drawable/actionbarbgroundするだけです!

于 2012-02-09T22:31:58.757 に答える
68

ActionBar ID は直接利用できないため、ここで少しハッキングする必要があります。

int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
if (actionBarTitleId > 0) {
    TextView title = (TextView) findViewById(actionBarTitleId);
    if (title != null) {
        title.setTextColor(Color.RED);
    }
}
于 2012-11-11T17:39:20.193 に答える
29

私は単純な1行のコードでやった

actionBar.setTitle(Html.fromHtml("<font color='#ff0000'>ActionBartitle </font>"));
于 2014-06-21T08:15:22.153 に答える
28

アクションバーのルートに追加します。この問題がありました。

<style name="ActionBar" parent="@style/Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="actionMenuTextColor">@color/stdDarkBlueText</item>
</style>

<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="titleTextStyle">@style/ActionBarTitleText</item>
    <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>

<style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/stdDarkBlueText</item>
    <item name="android:textSize">12sp</item>
</style>

<style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
    <item name="android:textColor">@color/stdDarkBlueText</item>
    <item name="android:textSize">12sp</item>
</style>

actionMenuTextColor - アクション バー テキストのテキストの色を変更しますWidget.Styled.ActionBar。他の 2 つの属性は、アクション バーのタイトルとサブタイトルを変更します。

于 2014-01-27T11:48:25.097 に答える
27

最も簡単な方法は、styles.xml でこれを行うことです。

Google のテンプレート styles.xml は、現在、次のものを生成します。

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

示されているように、終了タグの前にもう 1 行追加すると、テキストの色が Dark ActionBar の本来の色に変わります。

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>

色を別のものにカスタマイズする場合は、colors.xml で独自の色を指定するか、android:textColorPrimary 属性を使用して Android の組み込みの色を使用することもできます。

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
</style>


<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@android:color/darker_gray</item>
</style>

注: これにより、タイトルの色と、ActionBar に表示されるすべての MenuItem のタイトルが変更されます。

于 2017-01-03T19:14:25.550 に答える
19

アクション バーに HTML 文字列を設定しても、SDK v21+ のマテリアル テーマでは機能しません。

変更したい場合は、style.xml でプライマリ テキストの色を設定する必要があります。

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Material.Light">
        <!-- Customize your theme here. -->
        <item name="android:textColorPrimary">@color/actionbar-text-color</item>
    </style>
</resources>    
于 2014-12-18T13:15:15.240 に答える
5

これをアクティビティの onCreate に追加してみてください。ほぼすべての Android バージョンで動作します。

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  

また

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));
于 2016-10-14T05:25:52.697 に答える
5

これは、すべての回答を確認した後に使用したソリューションです

<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorAccent">@color/Button_color</item>
    <item name="android:editTextStyle">@style/EditTextStyle</item>
    <item name="android:typeface">monospace</item>
    <item name="android:windowActionBar">true</item>
    <item name="colorPrimary">@color/Title_Bar_Color</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>

</style>

<style name="EditTextStyle" parent="Widget.AppCompat.EditText"/>

<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="titleTextStyle">@style/ActionBarTitleText</item>
    <item name="android:background">@color/Title_Bar_Color</item>
    <item name="background">@color/Title_Bar_Color</item>
    <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>

<style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/solid_white</item>
    <item name="android:textSize">12sp</item>
</style>

<style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
    <item name="android:textColor">@color/solid_white</item>
    <item name="android:textSize">12sp</item>
</style>

必要な色を変更すると機能します

于 2015-11-03T09:49:04.823 に答える
3

これをあなたのテーマスタイルに入れるだけです。

<item name="android:textColorPrimary">@color/yourcolor</item>

于 2020-04-14T08:22:50.400 に答える
2

多くのメソッドを試してみてください。API のバージョンが低い場合、実現可能なメソッドは<item name="actionMenuTextColor">@color/your_color</item>Android 名前空間を使用しないことです。

PS:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionMenuTextColor">@color/actionMenuTextColor</item>
</style>
于 2015-12-14T12:13:15.810 に答える
0

Android 5 (lollipop) では、android:actionBarPopupThemeを使用して、オーバーフロー メニューのtextColorを設定する必要があります。

于 2015-03-03T11:29:21.443 に答える
0

SpannableStringBuilder を使用して、そのように色を設定するのが良い解決策です。文字列のさまざまな部分にさまざまな色を使用したり、画像を追加したりすることもできます.

新しいサポート ライブラリでテスト済み。

Android: TextView.setText() を使用して文字列の一部に色を付ける? を参照してください。

于 2013-10-29T11:19:40.340 に答える