我正在 android 中开发一个基本的绘图应用程序,我似乎无法以编程方式为我的单选按钮设置自定义可绘制对象。这些单选按钮由LayerDrawable
一个白色ColorDrawable
的边框和一个插入的黄色(或任何颜色)ColorDrawable
的中心组成。我将它LayerDrawable
与另一个(它有黑色边框表示选择)放在StateListDrawable
一起以保留RadioButton
功能。
但是当我尝试时setButtonDrawable(myDrawable)
,RadioButton
即使我指定了宽度和高度,它也占据了一个非常小的区域30dp
。
然后当我尝试setButtonDrawable(null)
and时setBackground(myDrawable)
,我RadioButton
不再具有它的功能。
这是我的代码
private void setupColorButtons() {
int[] colors = {Color.RED, Color.GREEN, Color.BLUE,
Color.YELLOW, Color.CYAN, Color.MAGENTA};
int childCount = mColorGroup.getChildCount();
for (int i = 0; i < childCount; i++) {
RadioButton colorButton = (RadioButton) mColorGroup.getChildAt(i);
colorButton.setButtonDrawable(createColorButtonDrawable(colors[i]));
}
}
private Drawable createColorButtonDrawable(int color) {
ColorDrawable center = new ColorDrawable(color);
ColorDrawable selBorder = new ColorDrawable(R.color.black);
ColorDrawable unselBorder = new ColorDrawable(R.color.white);
LayerDrawable sel = new LayerDrawable(new Drawable[] {selBorder, center});
sel.setLayerInset(1, 2, 2, 2, 2);
LayerDrawable unsel = new LayerDrawable(new Drawable[] {unselBorder, center});
unsel.setLayerInset(1, 2, 2, 2, 2);
StateListDrawable states = new StateListDrawable();
states.addState(new int[] {android.R.attr.state_checked}, sel);
states.addState(new int[] {-android.R.attr.state_checked}, unsel);
return states;
}
我已经看过类似的问题,但每个解决方案都需要我创建自定义 xml 样式。我只是想知道是否有人知道如何以StateListDrawable
编程方式设置自定义。提前感谢您的帮助!