如何通过编程方式设置android:button="@null”?

aamkag61  于 2023-01-11  发布在  Android
关注(0)|答案(5)|浏览(197)

我尝试通过编程方式向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),但没有任何改变。
任何帮助是非常感谢!

2j4z5cfb

2j4z5cfb1#

你需要设置一个空的StateListDrawable作为可绘制对象,所以android:button="@null"的Java等价物是:

radioButton.setButtonDrawable(new StateListDrawable());
vql8enpb

vql8enpb2#

您应该这样做:

button.setBackgroundDrawable(null);

如果你的drawable引用了selector,你可以通过selector xml使它透明:

<item android:drawable="@android:color/transparent" />

因为你可能已经找到了解决办法)

55ooxyrt

55ooxyrt3#

setButtonDrawable(getResources().getDrawable(android.R.color.transparent))应该可以做到这一点。
只有这个对我有用。

omqzjyyz

omqzjyyz4#

对我来说,在多个设备和API中都有效且非常简单的是setButtonDrawable(android.R.color.transparent);

4smxwvx5

4smxwvx55#

在Kotlin你可以这么做

radioButton.buttonDrawable = null

相关问题