オプション1)すばやく簡単な方法(ツールバーのみ)
appcompat-v7-r23以降、次の属性を自分のToolbar
スタイルで直接使用できます。
app:titleTextColor="@color/primary_text"
app:subtitleTextColor="@color/secondary_text"
最小SDKが23でネイティブを使用している場合はToolbar
、名前空間プレフィックスをに変更するだけandroid
です。
Javaでは、次のメソッドを使用できます。
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setSubtitleTextColor(Color.WHITE);
これらのメソッドは、カラーリソースIDではなくcolor intを取ります。
オプション2)ツールバーのスタイルとテーマの属性を上書きする
layout / xxx.xml
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.MyApp.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
style="@style/Widget.MyApp.Toolbar.Solid"/>
values / styles.xml
<style name="Widget.MyApp.Toolbar.Solid" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/actionbar_color</item>
<item name="android:elevation" tools:ignore="NewApi">4dp</item>
<item name="titleTextAppearance">...</item>
</style>
<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar">
<!-- Parent theme sets colorControlNormal to textColorPrimary. -->
<item name="android:textColorPrimary">@color/actionbar_title_text</item>
</style>
助けて!私のアイコンも色が変わりました!
@PeterKnutさんは、これがオーバーフローボタン、ナビゲーションドロワーボタン、戻るボタンの色に影響することを報告しました。また、テキストの色を変更しますSearchView
。
アイコンの色について:colorControlNormal
継承元
android:textColorPrimary
暗いテーマ(黒地に白)
android:textColorSecondary
明るいテーマ用(白地に黒)
これをアクションバーのテーマに適用すると、アイコンの色をカスタマイズできます。
<item name="colorControlNormal">#de000000</item>
appcompat-v7にはr23までのバグがあり、次のようにネイティブの対応物もオーバーライドする必要があります。
<item name="android:colorControlNormal" tools:ignore="NewApi">?colorControlNormal</item>
助けて!私のSearchViewは混乱しています!
注:このセクションは廃止されている可能性があります。
何らかの理由で、appcompat-v7に含まれているものとは異なる視覚的、技術的にではない戻る矢印を使用する検索ウィジェットを使用するため、アプリのテーマで手動で設定する必要があります。サポートライブラリのドローアブルは正しく色付けされます。それ以外の場合は常に白になります。
<item name="homeAsUpIndicator">@drawable/abc_ic_ab_back_mtrl_am_alpha</item>
検索ビューのテキストについては...簡単な方法はありません。ソースを掘り下げた後、私はテキストビューにアクセスする方法を見つけました。私はこれをテストしていませんので、これがうまくいかなかったらコメントで知らせてください。
SearchView sv = ...; // get your search view instance in onCreateOptionsMenu
// prefix identifier with "android:" if you're using native SearchView
TextView tv = sv.findViewById(getResources().getIdentifier("id/search_src_text", null, null));
tv.setTextColor(Color.GREEN); // and of course specify your own color
ボーナス:ActionBarスタイルとテーマ属性をオーバーライドする
デフォルトアクションappcompat-v7アクションバーの適切なスタイルは次のようになります。
<!-- ActionBar vs Toolbar. -->
<style name="Widget.MyApp.ActionBar.Solid" parent="Widget.AppCompat.ActionBar.Solid">
<item name="background">@color/actionbar_color</item> <!-- No prefix. -->
<item name="elevation">4dp</item> <!-- No prefix. -->
<item name="titleTextStyle">...</item> <!-- Style vs appearance. -->
</style>
<style name="Theme.MyApp" parent="Theme.AppCompat">
<item name="actionBarStyle">@style/Widget.MyApp.ActionBar.Solid</item>
<item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item>
<item name="actionBarPopupTheme">@style/ThemeOverlay.AppCompat.Light</item>
</style>