效果图:
思路:点击其中一个RadioButton时,把其他的RadioButton状态设置为未选中
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/problem_feedback_type_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:text="请选择问题类型"
android:textColor="#4B4B4B"
android:textSize="15sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:orientation="vertical"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/problem_feedback_type_text">
<LinearLayout
android:id="@+id/rg1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/r2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="卡顿" />
<RadioButton
android:layout_marginStart="30dp"
android:id="@+id/r1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="改进建议" />
</LinearLayout>
<LinearLayout
android:id="@+id/rg2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/r3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="闪退" />
<RadioButton
android:layout_marginStart="30dp"
android:id="@+id/r4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="其他问题" />
</LinearLayout>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
java代码:
注意!! : RadioButton监听setOnClickListener点击事件就好;不要监听setOnCheckedChangeListener(它会导致RadioButton状态混乱,因为你每次通过RadioButton.setChecked()设置状态后,都会再回调一次你设置的RadioButton的setOnCheckedChangeListener事件)
public class MainActivity extends AppCompatActivity {
RadioButton r1, r2, r3, r4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_problem_feedback);
r1 = findViewById(R.id.r1);
r2 = findViewById(R.id.r2);
r3 = findViewById(R.id.r3);
r4 = findViewById(R.id.r4);
r1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeChoice(1);
Log.e("AAA",r1.getText()+"r1:"+r1.isChecked()+"r2"+r2.isChecked()+"r3"+r3.isChecked()+"r4"+r4.isChecked());
}
});
r2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeChoice(2);
Log.e("AAA",r2.getText()+"r1:"+r1.isChecked()+"r2"+r2.isChecked()+"r3"+r3.isChecked()+"r4"+r4.isChecked());
}
});
r3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeChoice(3);
Log.e("AAA",r3.getText()+"r1:"+r1.isChecked()+"r2"+r2.isChecked()+"r3"+r3.isChecked()+"r4"+r4.isChecked());
}
});
r4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
changeChoice(4);
Log.e("AAA",r4.getText()+"r1:"+r1.isChecked()+"r2"+r2.isChecked()+"r3"+r3.isChecked()+"r4"+r4.isChecked());
}
});
}
private void changeChoice(int item) {
switch (item) {
case 1:
r1.setChecked(true);
r2.setChecked(false);
r3.setChecked(false);
r4.setChecked(false);
break;
case 2:
r1.setChecked(false);
r2.setChecked(true);
r3.setChecked(false);
r4.setChecked(false);
break;
case 3:
r1.setChecked(false);
r2.setChecked(false);
r3.setChecked(true);
r4.setChecked(false);
break;
case 4:
r1.setChecked(false);
r2.setChecked(false);
r3.setChecked(false);
r4.setChecked(true);
break;
}
}
}