2017-05-02 9 views
1

私はAndroidアプリケーションをプログラミングしていますが、「色を変更」オプション(設定画面など)を追加しようとしています。Androidスタジオに「変更色」オプションが含まれています

<color name="colorPrimary">#3F51B5</color> 
<color name="colorPrimaryDark">#303F9F</color> 
<color name="colorAccent">#ff4040</color> 

アイデアは、可能な場合に、次のとおりです。私が見つけた何 は「colors.xml」ファイルの3つの色(APP-> src->メーン> RES->値)があるということですたとえば、ボタンを押すことでそれらの色を変更します(赤のボタンは赤のテーマ、青のテーマは青のテーマに変わります)。 これはどういうことですか?そうでない場合は、色を変更するために別のアイデアがありますか? このような質問が既にある場合は申し訳ありません。私は何も見つけられませんでしたが、何を探したらいいのか分かりませんでした。

は、事前にありがとう:)

編集:

を現在、私はそれをそのよう心掛けております:

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btn_dark: 
     setTheme(R.style.BlackTheme); 
     Toast.makeText(context, "Dark", Toast.LENGTH_SHORT).show(); 
     break; 
    case R.id.btn_light: 
     setTheme(R.style.LightTheme); 
     Toast.makeText(context, "Light", Toast.LENGTH_SHORT).show(); 
     break; 
    case R.id.btn_settings_save: 
     Intent i = new Intent(SettingsActivity.this, MainActivity.class); 
     startActivity(i); 
     finish(); 
     break; 
    } 
} 

意味を、私はMainActivityでのonCreateを呼び出すことによって、それを変更したいです保存ボタンを押すと "setContentView"をリセットしようとしています。

どこですべてのテーマを設定する必要がありますか?マニフェストで? OnCreateに設定すると、「設定」で行った変更を上書きするか、それとも間違っているのでしょうか?

答えて

0

スタイルを使用する必要があります。

style.xmlファイルに2つのスタイルがあるとします。

<style name="AppThemeRed" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/red</item> 
    <item name="colorPrimaryDark">@color/redDark</item> 
    <item name="colorAccent">@color/red</item> 
</style> 
<style name="AppThemeBlue" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="colorPrimary">@color/blue</item> 
    <item name="colorPrimaryDark">@color/blueDark</item> 
    <item name="colorAccent">@color/blue</item> 
</style> 

今すぐボタンを押してスタイルをJavaから設定する必要があります。例の場合:?

setTheme(R.style.AppThemeRed); 
setContentView(R.layout.activity_main); 

だけを与えるcolorPrimaryレイアウトにあなたがGitHubに、このサンプルプロジェクトで見ることができ

カラー/ colorPrimary @ の代わりにスタイルcolorPrimaryを使用します。

ありがとう

+0

元の投稿に情報が追加されていますが、ここよりも読みやすくなっています。 – EXQuIsIIt

+0

私はちょうど私の答えを更新します。私はあなたのために新しいリポジトリを作成します。あなたの問題が今解決することを願っています。 –

+0

もう一度こんにちは..私は今(複数の活動を持っているので、共有環境設定を使用して)それをやったが、新しい問題を抱えている。再び色と関係があるが、別の問題だと言うだろう。新しい質問を開いたりここに追加したりする必要がありますか? – EXQuIsIIt

0

これらの3つの色はすべてデフォルトでアプリケーションアクティビティで使用されていますが、デフォルトではフローティングボタンの色であるため、アクセントの色が最も目立ちます。あなたがしたいことがある場合は、 '共有設定と、ユーザーの選択に基づいてテーマを構成するさまざまな色を持つ方法'に関するユーザー設定の調査に基づいて、アプリケーションの色/テーマを変更することです。 :)

関連する問題