我希望在一个单选组中有多个单选按钮,分为两列和多行。
到目前为止,我已经通过在单选组内放置LinearLayout来将它们分开。问题是当我点击它们时它们不是互斥的(我可以同时选择所有的选项)。除了编程方式之外,是否有一种方法使它们成为互斥的?
我希望在一个单选组中有多个单选按钮,分为两列和多行。
到目前为止,我已经通过在单选组内放置LinearLayout来将它们分开。问题是当我点击它们时它们不是互斥的(我可以同时选择所有的选项)。除了编程方式之外,是否有一种方法使它们成为互斥的?
我来到这个页面时有一个稍微不同的问题,我想让所有的单选按钮都水平排列。也许对某些人有帮助。设置方向将负责将所有单选按钮放在一行中。
<RadioGroup
android:id="@+id/commuteby"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_below="@+id/line0" >
注意: 如果组件横跨屏幕,则它也会将组件放置在同一行中。因此,在小屏幕手机上,您的某些列可能会被隐藏。但是,您可以为小屏幕创建另一个布局文件。
按照以下步骤进行操作:
.
private void initView(){
radioGroup.setOnCheckedChangeListener(radioGroup1CheckedChangeListener);
radioGroup2.setOnCheckedChangeListener(radioGroup2CheckedChangeListener);
}
RadioGroup.OnCheckedChangeListener radioGroup1CheckedChangeListener = new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i) {
case R.id.rb1:
radioGroup2.setOnCheckedChangeListener(null);
radioGroup2.clearCheck();
radioGroup2.setOnCheckedChangeListener(rgPaymentMethods2CheckedChangeListener);
break;
// more radiobutton id with same approach
}
}
};
RadioGroup.OnCheckedChangeListener radioGroup2CheckedChangeListener = new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i) {
case R.id.rb2:
radioGroup1.setOnCheckedChangeListener(null);
radioGroup1.clearCheck();
radioGroup1.setOnCheckedChangeListener(rgPaymentMethodsCheckedChangeListener);
break;
// more radiobutton id with same approach
}
}
};
如果你所说的“编程方式”是指只使用XML来控制这些单选按钮,那么不行,没有解决方案。
以“编程方式”来完成很容易。