2016-11-16 1 views
0

Googleを検索してキーワードを検索して戦うが、それでも何もない。私は同じようにしたいどのような指定されたビューをスタイリッシュに背景を変えてテーマ別に変更する

<style name="Theme.DefaultWhite" parent="@android:style/Theme.DeviceDefault"> 
    <item name="android:background">#ffffffff</item> 
    <item name="MyCustomBackground">#33ffffff</item> 
    </style> 
    <style name="Theme.DefaultBlue" parent="@android:style/Theme.DeviceDefault"> 
    <item name="android:background">#ffffffff</item> 
    <item name="MyCustomBackground">#3388ffff</item> 
    </style> 

と私のにある項目を設定するには、ビュー(これの他にはAndroidのデフォルトを使用)を指定しました。

<ImageView> 
     id = "@+id/NNI_ivCards" 
     background="@style/MyCustomBackground" 
    </ImageView> 
    <ImageView> 
     id = "@+id/NNI_ivBarRoot" 
    </ImageView> 

NNI_ivCardsImageViewはテーマによって、背景色を変更しなければならない、とNNI_ivBarRootはテーマによって変更されません。

テーマに合わせて変わった価値のあるスタイルのカスタムリソースが必要です。

Androidで余分なカスタム値をスタイルに入れないように設計されている場合は、できるだけ短いJavaコードが必要です。

答えて

1

ので、

このコードは、テーマを変更することにより、色(任意の色)を変更することができました。

まず、あなたがこのようなあなたのstyle.xmlに2スタイルを追加する必要があります。ここに

<style name="DefaultTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 

</style> 

<style name="CustomTheme" parent="Theme.DefaultTheme" > 

</style> 

ちょうど私は今、あなたのmanifest.xmlに行き、あなたのにこの行android:theme="@style/DefaultTheme"を追加し、DefaultThemeCustomThemeを追加しますアプリケーションタグ:

<application 
     android:theme="@style/DefaultTheme" 
     ...> 

名前の新しいxmlファイルの作成attrs.xmlと、このコードを追加します。

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <attr name="color1" format="color" /> 
    <attr name="color2" format="color" /> 
</resources> 

は、バックスタイルに行くと、これらの色を追加します。

<style name="DefaultTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="color1">#FFFFFF</item> 
    <item name="color2">#FFFFFF</item> 
</style> 

<style name="CustomTheme" parent="Theme.DefaultTheme" > 
    <item name="color1">#33ffffff</item> 
    <item name="color2">#3388ffff</item> 
</style> 

は今、あなたはDefaultThemeカラー1とカラー2に、2テーマを持っている#FFFFFFで、CustomThemeでカラー1は、#1 33ffffffとカラー2である、あなたのImageViewのに行くと、この色を追加

3388ffff#です:

<ImageView> 
    android:id = "@+id/NNI_ivCards" 
    android:background="?attr/color1" 
</ImageView> 

あなたがそうあなたの活動は、このようにする必要があり、onCreate()方法でsetContentView()メソッドの前setTheme(R.style.DefaultTheme);を呼び出す必要があり、テーマ変更する:私はそれがスタイルを見てハードコーディング場合、私はそれをテーマにしたスタイルを変更傾ける

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTheme(R.style.CustomTheme); 
    setContentView(R.layout.main_activity); 
    .... 
} 
+0

を。 – nyconing

+0

テーマを変更するコードと、テーマを変更するコードが必要です。解決するために私の答えを見てください。 –

+0

あなたは私のヒーローです! Set?attr/color1はそれを行う!!!!!!そしてそのattrはの下にある必要がありますか? – nyconing

関連する問題