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

时间:2012-01-30 11:12:47

标签: android

我希望在一个radiogroup中有单选按钮分为2列和几行。

到目前为止,我已经能够通过将LinearLayouts放在radiogroup中来划分它们。问题是当我点击它们时它们不是独占的(我可以同时检查所有这些)。有没有办法让它们独占(除了程序化的方式)?

3 个答案:

答案 0 :(得分:21)

我来到这个页面的问题略有不同。我想让所有单选按钮保持水平。愿这对某人有所帮助。设置方向将负责将所有单选按钮放在一行中。

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

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

答案 1 :(得分:0)

执行以下步骤

  1. 在同一行/行中为单选按钮创建水平RadioGroup
  2. 如果您需要两行RadioButtons,请执行步骤1两次
  3. 现在在Java代码中使用以下方法(假设RadioButton的2行表示2个RadioGroup)

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

答案 2 :(得分:-5)

如果通过“编程方式”表示您只想使用XML来控制这些单选按钮,那么就没有。没有解决方案。

以“编程方式”执行此操作应该非常简单。