gpt4 book ai didi

android - 将自定义编程创建的可绘制对象设置为状态的单选按钮

转载 作者:行者123 更新时间:2023-11-30 01:23:54 25 4
gpt4 key购买 nike

我想将一个以编程方式创建的 drawable 设置为单选按钮的选中和未选中状态,但它不起作用我的代码如下,

绘制矩形框的代码,

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

最佳答案

经过一些变通,我意识到问题是可绘制对象没有任何大小。我不确定您应该提供多大的尺寸,但只需添加以下行即可使您的 RadioButton 可见:

shape.setSize(50, 50);

我建议在 dimens.xml 中为它设置适当的大小并改用它:

int size = context.getResources().getDimensionPixelSize(R.dimen.radio_button_size);
shape.setSize(size, size);

关于android - 将自定义编程创建的可绘制对象设置为状态的单选按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36711258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com