У меня есть кнопка переключения с 3 пользовательскими состояниями: - нажата - отмечена - выпущена
Я использую следующий XML:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/togglebutton_color_custom_ripple" android:state_pressed="true" />
<item android:drawable="@drawable/togglebutton_color_custom_checked" android:state_checked="true"/>
<item android:drawable="@drawable/togglebutton_color_custom_unchecked" />
</selector>
Я хочу изменить фонцвет для каждого состояния этой кнопки программно. Я попытался использовать следующий код:
StateListDrawable drawable = (StateListDrawable) mToggleButtonCustom.getBackground();
DrawableContainer.DrawableContainerState dcs = (DrawableContainer.DrawableContainerState) drawable.getConstantState();
Drawable[] drawableItems = dcs.getChildren();
GradientDrawable gradientDrawablePressed = (GradientDrawable) drawableItems[0];
GradientDrawable gradientDrawableChecked = (GradientDrawable) drawableItems[1];
GradientDrawable gradientDrawableUnChecked = (GradientDrawable) drawableItems[2];
gradientDrawablePressed.setColor(Color.parseColor(color));
gradientDrawableChecked.setColor(Color.parseColor(color));
gradientDrawableUnChecked.setColor(Color.parseColor(color));
Он отлично работает для состояний «проверено» и «выпущено», потому что я использую классические формы в XML, но не работает для состояния «нажатие», потому что я используюследующий эффект Ripple в моем XML:
<?xml version="1.0" encoding="utf-8"?>
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/ripple">
<item>
<shape android:shape="oval">
<size
android:height="@dimen/togglebutton_size"
android:width="@dimen/togglebutton_size" />
<solid android:color="@color/blue_vs"/>
<stroke android:width="@dimen/togglebutton_button_stroke"
android:color="@color/white" />
</shape>
</item>
</ripple>
Казалось бы, мне нужно использовать RippleDrawable в моем коде, но я не совсем понимаю, как, я просто хочу изменить цвет сплошного фона,не цвет пульсации или удар.
Спасибо