我尝试通过编程方式向RadioGroup添加一组RadioButton,如下所示:
for (int i = 0; i < RANGE; i++) {
RadioButton button = new RadioButton(this);
button.setId(i);
button.setText(Integer.toString(i));
button.setChecked(i == currentHours); // Select button with same index as currently selected number of hours
button.setButtonDrawable(Color.TRANSPARENT);
button.setBackgroundResource(R.drawable.selector);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
((RadioGroup)view.getParent()).check(view.getId());
currentHours = view.getId();
}
});
radioGroupChild.addView(button);
}
我需要将button drawable设置为null(我只想在背景上显示文本)。使用android:button="@null"
在XML中手动完成此操作效果很好,但我不想硬编码每个单选按钮。我尝试过只使用button.setButtonDrawable(null)
,但没有任何改变。
任何帮助是非常感谢!
5条答案
按热度按时间2j4z5cfb1#
你需要设置一个空的
StateListDrawable
作为可绘制对象,所以android:button="@null"
的Java等价物是:vql8enpb2#
您应该这样做:
如果你的drawable引用了selector,你可以通过selector xml使它透明:
因为你可能已经找到了解决办法)
55ooxyrt3#
setButtonDrawable(getResources().getDrawable(android.R.color.transparent))
应该可以做到这一点。只有这个对我有用。
omqzjyyz4#
对我来说,在多个设备和API中都有效且非常简单的是
setButtonDrawable(android.R.color.transparent);
4smxwvx55#
在Kotlin你可以这么做