Изменить цвет значка переключателя с кода Java
Я хочу изменить цвет значка "переключатель" из кода Java, а не из XML, так как переключатель создается динамически. Минимальный SDK 16. Помощь будет высоко ценится.
Switch aSwitch = new Switch(context);
holder.llSwitch.addView(aSwitch);
holder.navIcon.setText(context.getResources().getString(R.string.fa_bell_o));
1 ответ
Решение
Вы можете проверить, кнопка проверена или нет, и установить цвет с состоянием
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout);
Switch mySwitch = new Switch(this);
linearLayout.addView(mySwitch);
mySwitch.setBackgroundColor(Color.BLACK);
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked)
buttonView.setBackgroundColor(Color.RED);
else buttonView.setBackgroundColor(Color.BLACK);
}
});
Так как вы портите Switch
а также ToggleButton
проверить этот ответ Переключение против переключения
Изменить: только для изменения цвета большого пальца вы можете попробовать, как показано ниже
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout);
final Switch mySwitch = new Switch(this);
linearLayout.addView(mySwitch);
mySwitch.getThumbDrawable().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked)
mySwitch.getThumbDrawable().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);
else
mySwitch.getThumbDrawable().setColorFilter(Color.BLACK, PorterDuff.Mode.MULTIPLY);
}
});