web-dev-qa-db-ja.com

AppCompat 21のLight.DarkActionBarテーマを使用してActionBarタイトルのテキストの色を変更する

V7 appcompat 21ライブラリを使用して、Lollipop以前のデバイスで新しいマテリアルスタイルを使用しています。私のstyles.xmlは次のようになります:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="Android:textColorPrimary">#ff0000</item>
    <item name="Android:textColorPrimaryInverse">#ff0000</item>
</style>

アクションバーのテキストの色を変更しようとしています。しかし、textColorPrimaryまたはtextColorPrimaryInverseに何を指定しても、色は常に白です。 Theme.AppCompatを継承する場合、「textColorPrimary」をオーバーライドできます。Theme.AppCompat.Lightを継承する場合、「textColorPrimaryInverse」をオーバーライドできます。ただし、Light.DarkActionBarテーマを使用する場合は機能しません。

ColorPrimaryなどの属性を設定してアクションバーの背景色を変更するので、AppThemeを間違いなく使用しています。他のリソース修飾子スタイルファイルは使用していません。

Androidスタイルファイルを掘り下げましたが、どの属性をオーバーライドするかわからないようです。何か案は?これはappcompatのバグですか?

55
weiyin

テーマのactionBarStyle属性で変更できます。

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

<style name="MyActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
    <item name="titleTextStyle">@style/MyTitleTextStyle</item>
</style>

<style name="MyTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="Android:textColor">CHANGE_COLOR_HERE</item>
</style>
161
jimmy0251

これにより、ツールバータイトルの色が白色になります。

<Android.support.v7.widget.Toolbar
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_height="wrap_content"
    Android:layout_width="match_parent"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    Android:minHeight="?attr/actionBarSize"
    Android:background="?attr/colorPrimary" />

ThemeOverlay.AppCompat.Dark.ActionBarTheme.AppCompat.Light.DarkActionBarの違いを理解するには this answer

このテーマで使用されるタイトルの色は白なので、app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"が明るい色を適用します。

25
vovahost

「values-v11」、「values-v14」など、存在する場合は、すべてのvaluesフォルダーで変更を行ってください。

それ以外の場合は、上記で示したものと同じ「AppTheme」がアプリで使用されていることを確認してください。

完全なstyle.xmlとスタイルを参照するマニフェストコードを投稿してください。これにより、問題に関するより多くの洞察が得られます。

また、設定を試すことができます アプリ:テーマ そして app:popupTheme ツールバーの属性。

4
Sreekanth

これをActivityのonCreateに追加してみてください。ほとんどすべてのAndroidバージョンで動作します。

Javaアクティビティの場合:

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

フラグメントの場合:

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

生成されたレイアウトxmlファイルを使用しましたが、Android:theme属性がオーバーライドされていることに気付きませんでした。

確認しましたか? :)

1
DoruChidean