1

チェックされた状態とチェックされていない状態のラジオボタンにプログラムで作成されたドローアブルを設定したかったのですが、動作していません。コードは次のとおりです。

長方形のボックスを描画するコード、

public static GradientDrawable squareView(int backgroundColor, int borderColor)
{
    GradientDrawable shape = new GradientDrawable();
    shape.setShape(GradientDrawable.RECTANGLE);
    //shape.setCornerRadii(new float[] { 8, 8, 8, 8, 0, 0, 0, 0 });
    shape.setColor(backgroundColor);
    shape.setStroke(3, borderColor);
    return shape;
}

プログラムで作成された View(squareview) を設定するコードを、ラジオボタンに記載されているとおりに設定します。

public static void setChecked_Selector(Context context,RadioButton view) {
    try {
        Drawable pressed=squareView(ContextCompat.getColor(context,R.color.colorBlue),ContextCompat.getColor(context,R.color.colorRed));//new BadgeDrawable(context,colorPressed);
        Drawable normal=squareView(ContextCompat.getColor(context,R.color.colorwhite),ContextCompat.getColor(context,R.color.colorRed));

        StateListDrawable states = new StateListDrawable();
        states.addState(new int[]{android.R.attr.state_checked,},pressed);
        states.addState(new int[]{android.R.attr.state_pressed}, pressed);

        states.addState(new int[]{android.R.attr.state_checked, android.R.attr.state_enabled}, pressed);
        states.addState(new int[]{android.R.attr.state_checked, -android.R.attr.state_enabled}, pressed);

        states.addState(new int[]{}, normal);
        view.setButtonDrawable(states);
    } catch (Exception e) {
    }
}
4

1 に答える 1

1

少し回避した後、ドローアブルにサイズがないことが問題であることに気付きました。どのサイズを指定すればよいかわかりませんが、次の行を追加するだけで表示されRadioButtonます:

shape.setSize(50, 50);

適切なサイズを入れて、dimens.xml代わりにこれを使用することをお勧めします。

int size = context.getResources().getDimensionPixelSize(R.dimen.radio_button_size);
shape.setSize(size, size);
于 2016-04-19T08:25:35.667 に答える