実現したいこと
Android Studio での Android アプリ開発において,ダークモードのオン・オフによるTextView
のtextColor
の設定について,一部にだけ別のstyles
を適用させたいです.(分かりにくいと思うため,読み進めて理解していただきたいですm(_ _)m)
現状
問題点
現状のダークモードのオン・オフによるアプリ全体のデザインは以下の通りです.
背景 | 文字色 | |
---|---|---|
ダークモード(オン) | 黒色 | 白色 |
ダークモード(オフ) | 白色 | 黒色 |
単純にこのデザインを適用するならば,アプリ全体のtextColor
は
xml
1<!-- ダークモード例 --> 2<style name="DarkTheme" parent="Theme.AppCompat"> 3 ... 4 <item name="android:textColor">@color/whiteColor</item> 5 ... 6</style>
のように,自作のstyle
でandroid:textColor
として色を設定することができます.
しかし,アプリのデザイン上,以下の場合も考えられます.
||背景|TextView
の背景|文字色|
|:--|:--:|:--:|
|ダークモード(オン)|黒色|白色|白色|
|ダークモード(オフ)|白色|黒色|黒色|
このような場合,上記で示したstyles.xml
ではすべてのtextColor
が,ダークモードがオンであれば「白色」,オフであれば「黒色」となってしまい,TextView
の背景と同化してしまいます.
ダークモードへの切替え
現状のダークモードへの切り替えはsetTheme
を使い,アクティビティを再描画することで実現しています.
参考サイト:AndroidのThemeを無理矢理動的に変更したよっていう話
主なstyles.xml
は以下の通りです.
xml
1<!-- ダークモード(オフ) --> 2<style name="WhiteTheme" parent="Theme.AppCompat.Light"> 3 ... 4</style> 5 6<!-- ダークモード(オン) --> 7<style name="DarkTheme" parent="Theme.AppCompat"> 8 ... 9</style>
また,切替えはSwitch
によるオン・オフのみです.
アイデアと理想
考えられるアイデアとしては,通常ではない色にするTextView
などにid
を設定し,どうにかしてtextColor
を別に設定することだと思いました.(アイデアのみで実現はできていません)
そのイメージ(理想)がこちらです.
xml
1<!-- 通常のTextView(idの有無は任意) --> 2<TextView 3 ... /> 4 5<!-- textColorを変更したいTextView(idを付加) --> 6<TextView 7 android:id="@+id/my_text" 8 ... />
xml
1<!-- ダークモード(オフ) --> 2<style name="WhiteTheme" parent="Theme.AppCompat.Light"> 3 ... 4 <item name="android:textColor">@color/blackColor</item> 5 <item name="my_text/android:textColor">@color/whiteColor</item> 6 ... 7</style> 8 9<!-- ダークモード(オン) --> 10<style name="DarkTheme" parent="Theme.AppCompat"> 11 ... 12 <item name="android:textColor">@color/whiteColor</item> 13 <item name="my_text/android:textColor">@color/blackColor</item> 14 ... 15</style>
恐らく,というか絶対に無理ですが,style
の中でid
を指定してtextColor
を変更したいということです.
なお,現状のダークモードへの切替えは,Switch
を用いてテーマを切り替えるだけで実現できており,テーマの切替え以外での色変更は望んでいません.すなわち,プログラム上でfindViewById
で直接参照・編集は望まないということです.
また,もしプログラムでの提案がある場合は,言語はJavaでお願いいたします.
実現したいこと(もう一度)
以上がアプリの現状と課題についてでした.
冒頭でも実現したいことは書いており,おおよそ繰り返しになりますが,通常のstyles.xml
では色の指定は1つに限定されてしまいますが,一部のTextView
などにおいて別の色を指定したいときは,どのように設定することでダークモードのオン・オフに対応したtextColor
を設定することができますか.
よろしくお願いいたします.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。