同一个 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 属性。
RadioGroup
s 本身就是 LinearLayout
s 并且只支持 RadioButton
s 作为直系子代。您可以看到此行为 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);
}
});
- 你只能使用单选组的子单选按钮
如果你不想要这个然后使用我的代码并删除单选组你可以使用自定义单选按钮
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[最后会是这样]
我在同一个RadioGroup
里面有两个RadioButtons
。但是在每个 RadioButton
旁边我想要一个 ImageButton
(信息)。因此我的代码如下:
<RadioGroup>
<LinearLayout> //Horizontal
<RadioButton/>
<ImageButton/>
</LinearLayout>
<LinearLayout> //Horizontal
<RadioButton/>
<ImageButton/>
</LinearLayout>
<RadioGroup/>
但是现在我面临的问题很简单,两个RadioButtons都可以被选中。我希望一次只能选择一个。
请忽略任何拼写错误。从 phone.
绑定到 postRadioGroup 不允许任何 ViewGroup 作为其子项。您将不得不使用 drawableRight 属性。
RadioGroup
s 本身就是 LinearLayout
s 并且只支持 RadioButton
s 作为直系子代。您可以看到此行为 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);
}
});
- 你只能使用单选组的子单选按钮
如果你不想要这个然后使用我的代码并删除单选组你可以使用自定义单选按钮
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[最后会是这样]