当前位置: 代码迷 >> 综合 >> RadioGroup 多行多列显示(一个笨方法)
  详细解决方案

RadioGroup 多行多列显示(一个笨方法)

热度:52   发布时间:2023-12-15 01:34:03.0

效果图:

在这里插入图片描述

思路:点击其中一个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"><TextViewandroid: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" /><LinearLayoutandroid: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"><LinearLayoutandroid:id="@+id/rg1"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButtonandroid:id="@+id/r2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="卡顿" /><RadioButtonandroid:layout_marginStart="30dp"android:id="@+id/r1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="改进建议" /></LinearLayout><LinearLayoutandroid:id="@+id/rg2"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButtonandroid:id="@+id/r3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="闪退" /><RadioButtonandroid: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;@Overrideprotected 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() {
    @Overridepublic 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() {
    @Overridepublic 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() {
    @Overridepublic 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() {
    @Overridepublic 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;}}
}