Динамическое создание селектора для состояния включения и отключения

Я хочу создать селектор динамически для кнопки. Когда кнопка отключена (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);

пожалуйста, не используйте селектор.

Другие вопросы по тегам