1

私は自分のアプリの素材デザインを実装しており、ユーザーはcolorPrimary、colorPrimaryDark、colorAccentの色をカスタマイズできるようにしたいと考えています。どうやってするか?コードを使ってテーマを動的に変更する方法

ユーザーが自分の色を選択できる設定アクティビティが必要です。その変更はすべての自分のアクティビティに適用されます。ありがとう。

ユーザーが色の静的リストから、またはあなたは、彼らがSharedPreferencesで選択した色を保存したときにアプリが起動し、それらを引き戻すことができ、カラーピッカーから選択することができているかどうかに応じて、
<style name="MyTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
</style> 
+0

これまでに一人の男が同様の質問をしていましたが、私はそれを確認するかもしれません:[ユーザーにその可能性を与える方法] -in](http://stackoverflow.com/questions/38349187/how-to-give-the-user-the-possibility-to-switch-between-different-colors-skin-in/38350441) –

答えて

0

。残念ながら、これは、テーマが不変なのでxmlではなくビアコードでこれらの色を使用するすべてのビューの色を設定する必要があることを意味します。この投稿をチェックしてください:How to _really_ programmatically change primary and accent color in Android Lollipop?あなたはdevconsoleからの答えでアプローチをとることができます。 https://stackoverflow.com/a/37905131/3314615

+0

yah、私カラーピッカーを提供し、好みを保存したい – Julia

+0

これを行うには、残念ながらコード内のすべてを管理する必要があります。したがって、コード内のすべての背景色とテキストの色を、sharedprefsに格納されている色に設定する必要があります。すみません、私はもっと良い方法があることを望みます。私はそれに取り組んでいる1つのアプリは、さまざまなクライアントのためのシェルアプリケーションです。私はconfig.jsonファイルを持っています。 – ClayHerendeen

+0

View(LinearLayout、EditText、TextViewなど)の各タイプのサブクラスを作成し、sharedpreferencesから取得してコンストラクタの色を設定することをお勧めします。その後、それらのカスタムクラスをレイアウトファイルで使用します。これは多くの作業ですが、すべてのフラグメントやアクティビティ内のすべてのビューの色をプログラムで変更するよりも効率的でコードが少なくて済みます。 – ClayHerendeen

関連する問題