2015-09-10 14 views
5

色に関していくつかのスレッドを読みましたが、すべてがstyle.xmlで設定する必要があります。colorControlActivatedの色をプログラム的に変更する

今のところ私はこれを使って色を決定しています。

<style name="Color1SwitchStyle"> 
    <item name="colorControlActivated">#0e8488</item> 
</style>' 

それは、コードを使用して、インスタンスのために、XMLを使用せずにSwitchCompat /チェックボックスの色を変更することは可能ですか?

+0

あなたがこの上を見ていたのですか? http://stackoverflow.com/a/27879897 – Sree

+0

ええ、私はどのようにコードを介してColorStateListにアクセスするのか分かりません。 –

+0

http://stackoverflow.com/a/17788095 – Sree

答えて

31

実際、難しいことではありません。

例:

int[][] states = new int[][] { 
     new int[] {-android.R.attr.state_checked}, 
     new int[] {android.R.attr.state_checked}, 
}; 

int[] thumbColors = new int[] { 
     Color.BLACK, 
     Color.RED, 
}; 

int[] trackColors = new int[] { 
     Color.GREEN, 
     Color.BLUE, 
}; 

SwitchCompat switchCompat = (SwitchCompat) findViewById(R.id.switchControl); 
AppCompatCheckBox checkBox = (AppCompatCheckBox) findViewById(R.id.checkbox); 
checkBox.setSupportButtonTintList(new ColorStateList(states, thumbColors)); 
DrawableCompat.setTintList(DrawableCompat.wrap(switchCompat.getThumbDrawable()), new ColorStateList(states, thumbColors)); 
DrawableCompat.setTintList(DrawableCompat.wrap(switchCompat.getTrackDrawable()), new ColorStateList(states, trackColors)); 
+0

魅力的な作品です! – enyciaa

関連する問題