在同一单选按钮组中水平和垂直对齐单选按钮

6

我希望在一个单选组中有多个单选按钮,分为两列和多行。

到目前为止,我已经通过在单选组内放置LinearLayout来将它们分开。问题是当我点击它们时它们不是互斥的(我可以同时选择所有的选项)。除了编程方式之外,是否有一种方法使它们成为互斥的?

3个回答

24

我来到这个页面时有一个稍微不同的问题,我想让所有的单选按钮都水平排列。也许对某些人有帮助。设置方向将负责将所有单选按钮放在一行中。

<RadioGroup
        android:id="@+id/commuteby"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_below="@+id/line0" >

注意: 如果组件横跨屏幕,则它也会将组件放置在同一行中。因此,在小屏幕手机上,您的某些列可能会被隐藏。但是,您可以为小屏幕创建另一个布局文件。


0

按照以下步骤进行操作:

  1. 创建水平RadioGroup,使RadioButton在同一行/排中
  2. 如果您需要2行RadioButton,请重复步骤1两次
  3. 现在在Java代码中使用以下方法(假设2行RadioButton意味着2个RadioGroups)

.

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

-6

如果你所说的“编程方式”是指只使用XML来控制这些单选按钮,那么不行,没有解决方案。

以“编程方式”来完成很容易。


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