Android动态RadioGroup/RadioButtons作为扁平按钮

7
这与相关帖子中提到的问题类似,但我认为它足够不同以至于需要单独提出问题。以下是具体内容:
在XML中声明单选按钮时,通过将单选按钮的button属性设置为null,可以轻松使“单选圆形”消失,如下所示:
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="One"
android:background="@drawable/radio_button_selector"
android:button="@null"/>

但是当我尝试动态声明单选框时,即使我这样做:

圆形单选按钮也无法消失。

myRadioButton.setButtonDrawable(null);

这是我的例子,即使我将按钮可绘制设置为null,单选框圆圈仍然出现。

RadioGroup myRadioGroup = (RadioGroup)findViewById(R.id.myRadioGroup);
for (int i = 0; i < arrayListOfRadioButtonStringNames.size(); i++)
{
    RadioButton myRadioButton = new RadioButton(this);
    myRadioButton.setText(arrayListOfRadioButtonStringNames.get(i));
    myRadioButton.setButtonDrawable(null);
    myRadioButton.setBackgroundResource(R.drawable.radio_button_selector);
    myRadioGroup.addView(myRadioButton);
}
myRadioGroup.invalidate();

如果我将按钮的可绘制对象设置为空,像这样:

myRadioButton.setButtonDrawable(android.R.id.empty);

无线电圆圈消失了,但文本并没有进入无线电圆圈应该在的区域。以下是一些ASCII艺术作品,展示它所做的内容:

setButtonDrawable(null):(O = 无线电圆圈)

-------------------
| O  One | O  Two |
-------------------

setButtonDrawable(android.R.id.empty):

-------------------
|    One |    Two |
-------------------

我尝试设置文本重力等参数,使文字出现在空白处,但似乎“单选圆圈”仍然存在,只是不可见了。

如有帮助,感谢您的支持。


实际上将按钮的可绘制资源设置为Android的空资源就可以了...我所要做的就是:myRadioButton.setButtonDrawable(android.R.id.empty); myRadioButton.setPadding(5,0,5,0); 然后它就可以在Galaxy Tab上工作了...但是:由于某种原因,当我在Xoom上运行它时,它会崩溃并给出一个“android.content.res.Resources$NotFoundException: File from drawable resource Id #_______” 的错误。为什么Xoom没有访问android.R.id.empty资源,而Galaxy Tab有呢? - aveyD
已解决此问题。请参见此帖子:https://dev59.com/m1fUa4cB1Zd3GeqPFS15 - aveyD
1个回答

1

我看到你已经解决了这个问题,但我想知道你是否尝试过使用:setVisibility(View.GONE); 我认为这应该可以解决。


我还没有机会尝试这个,但是这不会让整个单选按钮消失吗?我只想让单选按钮内的“点”消失。不过还是谢谢你的建议。 :) - aveyD
啊,是的,没注意到那个 :) - Surya Wijaya Madjid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接