我怎样才能以编程方式设置android:button =“@ null”?

时间:2013-04-29 17:12:58

标签: android android-layout radio-button

我正在尝试以编程方式将一组RadioButtons添加到RadioGroup,如下所示:

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

我需要将drawable按钮设置为null(我只想在背景上添加文本)。使用android:button="@null"在XML中手动执行此操作非常有效,但我不想对每个单选按钮进行硬编码。我试过做button.setButtonDrawable(null),但它没有改变任何东西。

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:42)

您需要将空StateListDrawable设置为drawable。所以android:button="@null"的Java等价物是:

radioButton.setButtonDrawable(new StateListDrawable());

答案 1 :(得分:6)

你应该这样做:

button.setBackgroundDrawable(null);

如果你的drawable有一个对selector的引用,你可以通过选择器xml:

使它透明
<item android:drawable="@android:color/transparent" />

因为你可能找到了解决方案;)

答案 2 :(得分:5)

setButtonDrawable(getResources().getDrawable(android.R.color.transparent)) 应该做的。

只有这对我有用。

答案 3 :(得分:3)

在多个设备和API中对我有用的东西就像setButtonDrawable(android.R.color.transparent);

一样简单