同一个 RadioGroup 中的 RadioButtons,但可以选择两个按钮

RadioButtons inside same RadioGroup but both buttons can be selected

我在同一个RadioGroup里面有两个RadioButtons。但是在每个 RadioButton 旁边我想要一个 ImageButton (信息)。因此我的代码如下:

<RadioGroup>
    <LinearLayout>     //Horizontal 
        <RadioButton/>
        <ImageButton/>
    </LinearLayout>
    <LinearLayout>     //Horizontal 
        <RadioButton/>
        <ImageButton/>
    </LinearLayout>
<RadioGroup/>

但是现在我面临的问题很简单,两个RadioButtons都可以被选中。我希望一次只能选择一个。

请忽略任何拼写错误。从 phone.

绑定到 post

RadioGroup 不允许任何 ViewGroup 作为其子项。您将不得不使用 drawableRight 属性。

RadioGroups 本身就是 LinearLayouts 并且只支持 RadioButtons 作为直系子代。您可以看到此行为 here.

您尝试做的事情不可能像这样,因为您将 RadioButton 包裹在 LinearLayout 中。

您有 2 种可能性:您可以复制代码并制作您自己的 RadioGroup
或者您可以 extend RadioButton 并通过在 RadioButton.

中应用您的自定义布局 来更改其外观

好吧,我确实找到了一个适合我的解决方案,因为我的解决方案很少 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);
        }
    });
  1. 你只能使用单选组的子单选按钮
  2. 如果你不想要这个然后使用我的代码并删除单选组你可以使用自定义单选按钮

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

更新:我认为这会对您有所帮助。我有同样的问题。

<LinearLayout> //Horizontal
    <LinearLayout>//Vertical
        <ImageButton/>
        <ImageButton/>
    </LinearLayout>
    <LinearLayout>//Vertical
        <RadioGroup> //Vertical
            <RadioButton/>
            <RadioButton/>
        </RadioGroup>
    </LinearLayout>
</LinearLayout>

1[最后会是这样]