Как настроить переключатель в Android?
Я хочу настроить переключатель, как показано на рисунке ниже.
Я пробовал SwitchCompat, но не могу настроить его как изображение. Ниже приведен код.
<style name="CustomSwitchStyle" parent="Theme.AppCompat.Light.NoActionBar">
...
<!-- Active thumb color & Active track color(30% transparency) -->
<item name="colorControlActivated">@color/white</item>
<!-- Inactive thumb color -->
<item name="colorSwitchThumbNormal">@color/white</item>
<!-- Inactive track color(30% transparency) -->
<item name="android:colorForeground">@android:color/darker_gray</item>
</style>
Я также пытался использовать виджет "Переключатель", но он не выглядит как требуемый пользовательский переключатель.
1 ответ
Попробуйте изменить это программно.
Порекомендуйте это.
public void switchBind(DetailItem item) {
switchColor(item.toggle);
listSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
switchColor(b);
}
});
}
private void switchColor(boolean checked) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
listSwitch.getThumbDrawable().setColorFilter(checked ? Color.BLACK : Color.WHITE, PorterDuff.Mode.MULTIPLY);
listSwitch.getTrackDrawable().setColorFilter(!checked ? Color.BLACK : Color.WHITE, PorterDuff.Mode.MULTIPLY);
}
}
РЕДАКТИРОВАТЬ 1:
Еще один способ изменить цвет.
private void switchColor(boolean isChecked) {
if (Build.VERSION.SDK_INT >= 16) {
int thumbColor;
int trackColor;
if(isChecked) {
thumbColor = Color.argb(255, 253, 153, 0);
trackColor = thumbColor;
} else {
thumbColor = Color.argb(255, 236, 236, 236);
trackColor = Color.argb(255, 0, 0, 0);
}
try {
getThumbDrawable().setColorFilter(thumbColor, PorterDuff.Mode.MULTIPLY);
getTrackDrawable().setColorFilter(trackColor, PorterDuff.Mode.MULTIPLY);
}
catch (NullPointerException e) {
e.printStackTrace();
}
}
}
Примечание: измените цвет, как вы хотите.