[解決済み] 新しいツールバーのタイトルカラーはどのように設定するのですか?
質問
新しい v7 ツールバーを使用していますが、タイトルの色を変更する方法がどうしてもわかりません。 私は、Toolbar の @style を styles.xml で宣言されたスタイルに設定し、textColor を持つ titleTextStyle を適用しました。 何か見落としているのでしょうか? 私はLollipopのためにコーディングしていますが、現在Kitkatデバイスでテストしています。
styles.xml
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
<style name="ActionBar" parent="Theme.AppCompat">
<item name="android:background">@color/actionbar_background</item>
<item name="android:titleTextStyle">@style/ActionBar.TitleTextStyle</item>
</style>
<style name="ActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
<item name="android:textColor">@color/actionbar_title_text</item>
</style>
</resources>
actionbar.xml。
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar_actionbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
style="@style/ActionBar"/>
どのように解決するのですか?
オプション 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ではなく、カラーintを受け取ります!
オプション2) ツールバーのスタイルとテーマの属性をオーバーライドする
レイアウト/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"/>
値/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>
r23 までの appcompat-v7 にはバグがあり、このようにネイティブの対応もオーバーライドする必要がありました。
<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>
関連
-
NetworkOnMainThreadException
-
[解決済み] TextViewの文字色をコードで設定する方法は?
-
最新のandroidプロジェクトディレクトリにあるarmeabi-v7aとarmeabiの具体的な意味とその違いを教えてください。
-
Androidプロセス生存のためのソリューション
-
Androidの美しいSeekBarスタイルのカスタマイズ
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] 既存のカスタムテーマでXMLのアクティビティのタイトルバーを非表示にする方法
-
[解決済み] EditTextのカーソル色を設定する
-
[解決済み] Androidの新しいActionBarをサポートするTheme.AppCompat.Lightが見つからない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
gitlab 設定エラー。リモートリポジトリから読み込めなかったか、ホストキーの検証に失敗しました。
-
Google PlayデバイスはPlay保護機構の認証を受けていません。
-
JVMのエラーに遭遇しました。Java Runtime Environmentによって致命的なエラーが検出されました。
-
プロセス 'command 'F:\sdkbuild-tools', 26.0.2 AAAPT.exe' finished with non-zero exit value 1
-
Windowsのadbシェルでデータディレクトリにアクセスするとパーミッションが拒否される
-
repo: コマンドが見つかりません
-
Androidプロセス生存のためのソリューション
-
アンドロイドの遅延実行のいくつかの方法
-
Android.support.v7.widget.Toolbar が見つかりませんでした。
-
android.content.ActivityNotFoundException を解決します。Intent問題を処理するActivityが見つからない