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

效果图:

在这里插入图片描述

思路:点击其中一个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;
        }

    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值