-2

ボタンのセレクターを動的に作成したい。ボタンが無効になっている場合 ( setEnable(false))、その色が変わるはずです。

4

3 に答える 3

0

StateListDrawableが答えです

ただし、さまざまなステータスに基づいて色を変更したいだけの場合は、セレクター関連の xml を大量に記述したくありません。

重要なポイントは、StateListDrawableを動的に構築することです。

xml を書くのにうんざりしているので、StateListDrawableBuilderDrawableBuilderを作成します。

コードを表示していないことをお詫びします。

于 2015-07-16T06:18:42.583 に答える
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 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 }));
于 2015-07-16T06:59:50.877 に答える
-4
btn.setEnable(false);
btn.setBackgroundColor(color);

セレクターは使用しないでください。

于 2015-07-16T05:59:55.453 に答える