我在同一RadioButtons
内有两个RadioGroup
。但是在每个RadioButton
旁边我想要一个ImageButton
(信息)。因此我的代码如下:
<RadioGroup>
<LinearLayout> //Horizontal
<RadioButton/>
<ImageButton/>
</LinearLayout>
<LinearLayout> //Horizontal
<RadioButton/>
<ImageButton/>
</LinearLayout>
<RadioGroup/>
但是现在我遇到的问题相当简单,可以选择两个RadioButtons。我希望一次只能选择一个。
Plz忽略任何拼写错误。一定要从手机发布这个。
答案 0 :(得分:1)
RadioGroup
是LinearLayout
个自己,只支持RadioButton
作为直接子女。您可以看到此行为here。
由于您将RadioButton
包裹在LinearLayout
中,因此您无法做到这一点。
您有两种可能:您可以复制代码并制作自己的RadioGroup
,
或者您可以extend RadioButton
只需在RadioButton
内应用自定义布局 来更改其外观。
答案 1 :(得分:0)
RadioGroup不允许任何ViewGroup作为其子级。您必须使用drawableRight属性。
答案 2 :(得分:0)
我找到了一个适合我的解决方案,因为我的RadioButtons
很少。
我为每个RadioButton
设置一个OnClickListener()并设置其他未选中的。
final RadioButton a1 = (RadioButton) findViewById(R.id.a1);
final RadioButton a2 = (RadioButton) findViewById(R.id.a2);
a1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
a2.setChecked(false);
}
});
a2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
a1.setChecked(false);
}
});
答案 3 :(得分:0)
如果你不想要这个然后使用我的代码并删除radiogroup你可以使用自定义单选按钮
final RadioButton a1 = (RadioButton) findViewById(R.id.a1);
final RadioButton a2 = (RadioButton) findViewById(R.id.a2);
a1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
a2.setChecked(false);
a1.setChecked(true);
}
});
a2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
a1.setChecked(false);
a2.setChecked(true);
}
});
答案 4 :(得分:-1)
更新:我认为这会对你有所帮助。我有同样的问题。
<LinearLayout> //Horizontal
<LinearLayout>//Vertical
<ImageButton/>
<ImageButton/>
</LinearLayout>
<LinearLayout>//Vertical
<RadioGroup> //Vertical
<RadioButton/>
<RadioButton/>
</RadioGroup>
</LinearLayout>
</LinearLayout>
1 [这就是它最终会出现的方式]