如何以编程方式设置android:button="@空“;?

如何以编程方式设置android:button="@空“;?,android,android-layout,radio-button,Android,Android Layout,Radio Button,我试图通过编程方式将一组单选按钮添加到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 sam

我试图通过编程方式将一组单选按钮添加到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);
}
for(int i=0;i
我需要将按钮drawable设置为null(我只需要背景上的文本)。使用
android:button=“@null”
在XML中手动执行此操作非常有效,但我不想硬编码每个单选按钮。我试过只做
按钮。setButtonDrawable(null)
,但它没有改变任何东西

非常感谢您的帮助

您应该这样做:

button.setBackgroundDrawable(null);
如果您的drawable具有对选择器的引用,则可以通过选择器xml使其透明:

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


您可能已经找到了解决方案;)

您需要将空的
StateListDrawable
设置为drawable。因此,android:button=“@null”
的Java等价物是:

radioButton.setButtonDrawable(new StateListDrawable());
setButtonDrawable(getResources().getDrawable(android.R.color.transparent))
我们应该做到这一点


只有这一点对我有效。

在多个设备和API中对我有效且简单的是
setButtonDrawable(android.R.color.transparent)

我在上面说过,我试过这个,但由于某种原因它不起作用。它是可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置为可设置的。哦,抱歉。问题是,这只是删除了背景,我将在其中设置自定义选择器drawable。好的,那么您应该在选择器xml中设置透明颜色。从API 16开始,
setBackgroundDrawable
已被弃用。在这种情况下,请使用
setBackground(null)
。如果您真的想使用背景选择器,这是一个更好的答案。这对我来说非常有效。不知道为什么这不是最好的答案。对我来说也是如此!谢谢这与setButtonDrawable(android.R.color.transparent)相同;不是在所有设备上,为什么?没有在hTC one X上工作,但在Nexus 4上工作。这比设置为答案的答案工作得更好!谢谢你,你可以简单地把
setButtonDrawable(android.R.color.transparent)放进去
正如@amalan在之前的评论中指出的那样。