动态创建选择器drawable以启用和禁用状态

时间:2015-07-16 05:19:17

标签: android statelistdrawable

我想为按钮动态创建选择器。当按钮被禁用(setEnable(false))时,其颜色应该改变。

3 个答案:

答案 0 :(得分:0)

StateListDrawable 就是答案。





如果你只想根据不同的状态更改颜色,不要写一堆与选择器相关的xml。

&# xA;


关键点是动态构建StateListDrawable。





我厌倦了编写xml,所以我创建 StateListDrawableBuilder DrawableBuilder 这样做。





看看它,抱歉没有显示任何代码。




答案 1 :(得分:0)

在我的代码中弄清楚它有愚蠢的错误。

创建选择器的方法

 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设置为按钮:

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 }));

答案 2 :(得分:-2)

btn.setEnable(false);
btn.setBackgroundColor(color);

请不要使用选择器。