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

Android 为启用和禁用状态动态创建选择器drawable,android,statelistdrawable,Android,Statelistdrawable,我想为按钮动态创建选择器。当按钮被禁用时,其颜色应改变 btn.setEnable(false); btn.setBackgroundColor(color); 请不要使用选择器。答案如下 但是,如果您只是想根据不同的状态更改颜色,那么就不要编写一堆与选择器相关的xml 关键点是动态构建StateListDrawable 我已经厌倦了编写xml,所以我创建了一个和一个 请看一看,很抱歉没有显示任何代码。发现我的代码中有愚蠢的错误 方法来创建选择器 public static StateLis

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

btn.setEnable(false);
btn.setBackgroundColor(color);
请不要使用选择器。

答案如下

但是,如果您只是想根据不同的状态更改颜色,那么就不要编写一堆与选择器相关的xml

关键点是动态构建StateListDrawable

我已经厌倦了编写xml,所以我创建了一个和一个


请看一看,很抱歉没有显示任何代码。

发现我的代码中有愚蠢的错误

方法来创建选择器

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

阅读StateListDrawable我已经阅读了,但它在状态下不起作用。它起作用了,许多选择器使用该状态。这是我的错,我犯了一个非常愚蠢的错误。
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 }));