<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/public_line"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/Public"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="6"
android:text="Public"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
android:textSize="20dp"
android:textColor="@android:color/black"/>
<RadioButton
android:id="@+id/public_button"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_marginTop="24dp"
/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginBottom="8dp"
android:text="league is visible to the public,
that is, anyone can join your league"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/Private"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="6"
android:text="Private"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
android:textSize="20dp"
android:textColor="@android:color/black"/>
<RadioButton
android:id="@+id/private_button"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_marginTop="24dp"
/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginBottom="8dp"
android:text="Only people with invite code can join"
/>
</RadioGroup>
<TextView
android:layout_alignParentBottom="true"
android:background="@drawable/orange_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Done"
android:padding="16dp"
android:textSize="20dp"
android:textColor="@android:color/black"
android:layout_weight="1"
android:gravity="center"/>
</RelativeLayout>
这是我的布局。它允许选择两个单选按钮。有人可以帮我找出问题所在吗?据我所知,问题在于单选按钮不是直接位于单选按钮组中,而是应该如何将它们直接容纳在单选按钮组中以获得相同的布局。还有其他解决问题的方法
答案 0 :(得分:2)
您的radioButton一定是RadioGroup这样的子对象
does-ok
但是在您的情况下,它是linearlayout的子元素,每个单选按钮都可以选择
答案 1 :(得分:0)
RadioButton
必须是RadioGroup
的直接子代,才能使其自动管理单个选择。
从您的布局看来,您似乎试图在RadioButton
的侧面显示文本。为此,您只需在android:text
上设置属性RadioButton
,而无需使用其他TextView
。
答案 2 :(得分:0)
只需尝试一下
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/radio1">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/Public"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="Public"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
android:textSize="20dp"
android:textColor="@android:color/black"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
<RadioButton
android:id="@+id/public_button"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_marginTop="24dp"
android:checked="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginBottom="8dp"
android:text="league is visible to the public,
that is, anyone can join your league"
app:layout_constraintTop_toBottomOf="@+id/Public"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:id="@+id/text1"
/>
<TextView
android:id="@+id/Private1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="6"
android:text="Private"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
android:textSize="20dp"
android:textColor="@android:color/black"
app:layout_constraintTop_toBottomOf="@+id/text1"
app:layout_constraintStart_toStartOf="parent"/>
<RadioButton
android:id="@+id/private_button2"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_marginTop="24dp"
android:checked="true"
app:layout_constraintTop_toBottomOf="@+id/text1"
app:layout_constraintEnd_toEndOf="parent"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginBottom="8dp"
android:text="Only people with invite code can join"
app:layout_constraintTop_toBottomOf="@+id/Private1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</android.support.constraint.ConstraintLayout>
</RadioGroup>
答案 3 :(得分:0)
有两种方法可以实现您的解决方案
首先是RadioButtons直接设置RadioGroup的子项,如下所示
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/public_button"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_marginTop="24dp"
/>
<RadioButton
android:id="@+id/private_button"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="16dp"
android:layout_marginTop="24dp"
/>
</RadioGroup>
第二个解决方案是,如果您未将RadioButtons设置为RadioGroup的直接子代,则应将如下代码添加到Java文件中:
publicButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
publicButton.setChecked(true);
privateButton.setChecked(false);
}
}
});
privateButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
publicButton.setChecked(false);
privateButton.setChecked(true);
}
}
});
其中privateButton和publicButton是单选按钮。
希望它对您有用。