私は1つのテーマだけを使ってアプリを作ったが、今は実行中にユーザーがそれを変更できるようにしたい。いくつかのレイアウト要素は特定の色を使って色付けする必要があるので、私のlayout.xmlにはandroid:background="@color/colorBackground"
などの所有権があります。layout.xml内から現在のアプリケーションテーマの色を取得する方法は?
現在、colors.xml
の中にカラーパレットを作っています。これは次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#607D8B</color>
<color name="colorPrimaryDark">#455A64</color>
<color name="colorAccent">#FF9800</color>
<color name="colorBackground">#FAFAFA</color>
<color name="colorTextSubtitle">#F0F0F0</color>
<color name="colorTextSubtitleBackground">#AA000000</color>
</resources>
ただし、この方法では1つのテーマしか設定できません。色をテーマスタイルの一部にするようなことを考えていました(すべてのテーマが同じ色のアイテムを持ちますが、値は異なります)。
私のレイアウトファイルがアプリケーションの現在のテーマを検出し、そこからその色の名前を取得するにはどうすればよいですか?だからandroid:background="[currentTheme.colorBackground]"
のように私は複数のスタイルを持つことができますし、それらの間で変更します。
onCreate()
メソッドをオーバーライドするときに、テーマを共有プレフィックスなどに置き換えて色をプログラム的に変更することを考えましたが、それはあまりにも複雑に思われ、簡単な方法が必要だと思いました。しかし、私はソートのオンラインで何かを見つけることができません。
あなたがオンライン何かを見つけることができませんか?私は実行時にテーマを動的に変更する方法に関するチュートリアルを見てきたことは知っています –