不在一起的RadioButton实现单选效果

这篇博客介绍了如何通过XML布局和编程方式,在不使用在一起的RadioButton的情况下实现单选效果。主要步骤包括设置RadioGroup和RadioButton,处理RadioButton的点击事件,确保每次点击后只有一个选项被选中。代码示例展示了具体的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ffffff"
    >
    <LinearLayout
        android:background="@drawable/dialog_bg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    <TextView
        android:layout_marginTop="20dp"
        android:textSize="20dp"
        android:textColor="#000009"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="主题布局"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    <LinearLayout
        android:layout_marginRight="10dp"
        android:layout_weight="1"
        android:layout_marginLeft="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/image_hei"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/hei"/>
        <RadioGroup
            android:id="@+id/rg_one"
            android:layout_marginTop="-20dp"
            android:layout_gravity="center_horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        <RadioButton
            android:id="@+id/btn_hei"
            android:scaleX="0.7"
            android:scaleY="0.7"
            android:textSize="20dp"
            android:checked="true"
            android:button="@drawable/check_style"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="黑夜荧光"/>
        </RadioGroup>
    </LinearLayout>
        <LinearLayout
            android:layout_weight="1"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/image_lan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/lan"/>
            <RadioGroup
                android:id="@+id/rg_two"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="-20dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/btn_lan"
                android:scaleX="0.7"
                android:scaleY="0.7"
                android:textSize="20dp"
                android:button="@drawable/check_style"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="夜晚星空"/>
            </RadioGroup>
        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_marginBottom="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_weight="1"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/image_lv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/lv"/>
            <RadioGroup
                android:id="@+id/rg_san"
                android:layout_marginTop="-20dp"
                android:layout_gravity="center_horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/btn_lv"
                android:scaleX="0.7"
                android:scaleY="0.7"
                android:textSize="20dp"
                android:button="@drawable/check_style"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="夏日雨滴"/>
            </RadioGroup>
        </LinearLayout>
        <LinearLayout
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/image_qian"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/qian"/>
            <RadioGroup
                android:id="@+id/rg_si"
                android:layout_marginTop="-20dp"
                android:layout_gravity="center_horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/btn_qian"
                android:scaleX="0.7"
                android:scaleY="0.7"
                android:textSize="20dp"
                android:button="@drawable/check_style"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="和风旭日"/>
            </RadioGroup>
        </LinearLayout>
    </LinearLayout>
    </LinearLayout>
</LinearLayout>

效果图:

下面呢    就进入到如何实现单选效果了

首先呢,就是先找到各自的控件RadioGroup和RadioButton

然后,我们进行RadioButton的点击处理(不能进行RadioGroup的点击,虽然能实现效果,但是会出现需要点击来此才能触发点击事件)

在点击事件中进行处理:

rg2.clearCheck();
rg3.clearCheck();
rg4.clearCheck();

这样就可以实现我们的单选效果了

下面来上代码

xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ffffff"
    >
    <LinearLayout
        android:background="@drawable/dialog_bg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    <TextView
        android:layout_marginTop="20dp"
        android:textSize="20dp"
        android:textColor="#000009"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="主题布局"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
    <LinearLayout
        android:layout_marginRight="10dp"
        android:layout_weight="1"
        android:layout_marginLeft="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <ImageView
            android:id="@+id/image_hei"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/hei"/>
        <RadioGroup
            android:id="@+id/rg_one"
            android:layout_marginTop="-20dp"
            android:layout_gravity="center_horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
        <RadioButton
            android:id="@+id/btn_hei"
            android:scaleX="0.7"
            android:scaleY="0.7"
            android:textSize="20dp"
            android:checked="true"
            android:button="@drawable/check_style"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="黑夜荧光"/>
        </RadioGroup>
    </LinearLayout>
        <LinearLayout
            android:layout_weight="1"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/image_lan"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/lan"/>
            <RadioGroup
                android:id="@+id/rg_two"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="-20dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/btn_lan"
                android:scaleX="0.7"
                android:scaleY="0.7"
                android:textSize="20dp"
                android:button="@drawable/check_style"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="夜晚星空"/>
            </RadioGroup>
        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_marginBottom="20dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <LinearLayout
            android:layout_weight="1"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/image_lv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/lv"/>
            <RadioGroup
                android:id="@+id/rg_san"
                android:layout_marginTop="-20dp"
                android:layout_gravity="center_horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/btn_lv"
                android:scaleX="0.7"
                android:scaleY="0.7"
                android:textSize="20dp"
                android:button="@drawable/check_style"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="夏日雨滴"/>
            </RadioGroup>
        </LinearLayout>
        <LinearLayout
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/image_qian"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/qian"/>
            <RadioGroup
                android:id="@+id/rg_si"
                android:layout_marginTop="-20dp"
                android:layout_gravity="center_horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
            <RadioButton
                android:id="@+id/btn_qian"
                android:scaleX="0.7"
                android:scaleY="0.7"
                android:textSize="20dp"
                android:button="@drawable/check_style"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="和风旭日"/>
            </RadioGroup>
        </LinearLayout>
    </LinearLayout>
    </LinearLayout>
</LinearLayout>

acticity中:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private RadioButton hei,lan,lv,qian;
private RadioGroup rg1,rg2,rg3,rg4;
protected void onCreate(Bundle savedInstanceState) {
hei= findViewById(R.id.btn_hei);
lan= findViewById(R.id.btn_lan);
lv= findViewById(R.id.btn_lv);
qian= findViewById(R.id.btn_qian);
rg1= findViewById(R.id.rg_one);
rg2= findViewById(R.id.rg_two);
rg3= findViewById(R.id.rg_san);
rg4= findViewById(R.id.rg_si);
hei.setOnClickListener(this);
lan.setOnClickListener(this);
lv.setOnClickListener(this);
qian.setOnClickListener(this);
    }
@Override
public void onClick(View v) {
     switch (v.getId()){
         case R.id.btn_hei:
             rg2.clearCheck();
             rg3.clearCheck();
             rg4.clearCheck();
             break
         case R.id.btn_lan:
             rg1.clearCheck();
             rg3.clearCheck();
             rg4.clearCheck();
             break;
         case R.id.btn_lv:
             rg1.clearCheck();
             rg2.clearCheck();
             rg4.clearCheck();
             break;
         case R.id.btn_qian:
             rg1.clearCheck();
             rg2.clearCheck();
             rg3.clearCheck();
             break;
     }
}

}

ok,这样就可以实现效果了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值