Динамическое создание селектора для состояния включения и отключения
Я хочу создать селектор динамически для кнопки. Когда кнопка отключена (setEnable(false)
), его цвет должен измениться.
3 ответа
Решение
Понял это с глупой ошибкой в моем коде.
Способ создания селектора
public static StateListDrawable createSelectorsWithStates(int[] state,
Drawable[] drawables)
{
StateListDrawable stateDrawable = new StateListDrawable();
for (int i = 0; i < state.length; i++)
{
stateDrawable.addState(new int[] { state[i] }, drawables[i]);
}
return stateDrawable;
}
Чтобы установить рисование на кнопку:
Drawable enable = ResourceManager.createRectangleShape(
bgColor, null, borderRadius);
enable.setAlpha((int)0.5f);
Drawable disable = ResourceManager.createRectangleShape(
bgColor, null, borderRadius);
disable.setAlpha(150);
ResourceManager.setDrawable(v1, ResourceManager
.createSelectorsWithStates(new int[] {
android.R.attr.state_enabled,
-android.R.attr.state_enabled },
new Drawable[] { enable, disable }));
StateListDrawable является ответом.
Если вы просто хотите изменить цвет, основываясь на другом статусе, не пишите связку, относящуюся к селектору xml.
Ключевым моментом является динамическое построение StateListDrawable.
Я устал писать XML, поэтому я создаю StateListDrawableBuilder и DrawableBuilder для этого.
Посмотрите на это, извините за то, что не показывал код.
btn.setEnable(false);
btn.setBackgroundColor(color);
пожалуйста, не используйте селектор.