1

ユーザーに応じてボタンを描画する必要があります。これらのボタンは、角を丸くし、背景をグラデーションにする必要があります。

この結果を達成するために、ボタンを作成するコードは次のとおりです。

        ImageButton btn = new ImageButton(this);
        btn.setBackgroundDrawable(null);
        GradientDrawable gradientNormal = new GradientDrawable(Orientation.BOTTOM_TOP,
                new int[] { cc.getColorSelector()[1], cc.getColorSelector()[0] });
        GradientDrawable gradientPressed = new GradientDrawable(Orientation.BOTTOM_TOP,
                new int[] { cc.getColorSelector()[0], cc.getColorSelector()[1] });
        StateListDrawable stateListDrawable = new StateListDrawable();
        stateListDrawable.addState(new int[] { android.R.attr.state_pressed }, gradientPressed);
        stateListDrawable.addState(new int[] {}, gradientNormal);
        RoundRectShape rect = new RoundRectShape(new float[] { 30, 30, 30,
                30, 30, 30, 30, 30 }, null, null);
        ShapeDrawable bg = new ShapeDrawable(rect);

cc.getColorSelector() は整数色のみを返します。

ここで、ボタンの背景として使用できる単一のドローアブルを作成するために、ShapeDrawable の形状を StateListDrawable の色とマージする必要があります。

どうすればいいですか?

4

2 に答える 2