Android Studio中的RadioButton,checkBox

本文详细介绍了Android开发中UI控件的优化方法,包括RadioButton和CheckBox的使用及事件处理,展示了如何通过代码实现按钮状态变化的监听与响应,以及如何自定义控件的视觉效果。

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

接上一篇blog,对于点击事件的优化处理mainActivity.java的程序代码如下,多加一个RadioButton的部署

public class MainActivity extends AppCompatActivity {
    private Button mBtnTextView;
    private Button mBtnEditView;
    private Button mBtnRadioButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mBtnTextView = (Button) findViewById(R.id.btn_textview);
        mBtnEditView = (Button)findViewById(R.id.btn_edittext);
        mBtnRadioButton = (Button)findViewById(R.id.btn_radiobutton);
        setListeners();
    }
    private void setListeners(){
        OnClick onclick = new OnClick();
        mBtnTextView.setOnClickListener(onclick);
        mBtnEditView.setOnClickListener(onclick);
        mBtnRadioButton.setOnClickListener(onclick);
    }

    private class OnClick implements View.OnClickListener{
        @Override
        public void onClick(View v){
            Intent intent = null;
            switch (v.getId()){
                case R.id.btn_textview:
                    intent=new Intent(MainActivity.this,TextViewActivity.class);
                    break;
                case R.id.btn_edittext:
                    intent=new Intent(MainActivity.this,EditTextActivity.class);
                    break;
                case R.id.btn_radiobutton:
                    intent=new Intent(MainActivity.this,RadioButtonActivity.class);
                    break;
            }
            startActivity(intent);
        }
    }
}

一.RadioButton

RadioButtonActivity.java文件代码,输出当前选中的按钮的文本内容。

import android.os.Bundle;
import android.widget.CheckedTextView;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;

public class RadioButtonActivity extends AppCompatActivity{
    private RadioGroup mRg1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_radio_button);
        mRg1 = (RadioGroup) findViewById(R.id.rg_1);
        mRg1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(RadioGroup group,@IdRes int checkedId) {
                RadioButton radioButton = (RadioButton)group.findViewById(checkedId);
                //设置监听事件,输出当前选中的radiobutton按钮的文本内容
                Toast.makeText(RadioButtonActivity.this,radioButton.getText(),Toast.LENGTH_SHORT).show();
            }
        });
    }
}
activity_radio_button.xml文件代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp">
    <RadioGroup
        android:id="@+id/rg_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <RadioButton
            android:id="@+id/rb_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"
            android:textColor="#1CBBCF"
            android:textSize="20sp"
            android:checked="true"
            />
        <RadioButton
            android:id="@+id/rb_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"
            android:layout_below="@+id/rb_1"
            android:textColor="#E68F0F"
            android:textSize="20sp"/>
            />
    </RadioGroup>
    <RadioGroup
        android:id="@+id/rg_2"
        android:layout_below="@id/rg_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <RadioButton
            android:id="@+id/rb_3"
            android:layout_margin="10dp"
            android:layout_width="60dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:text="男"
            android:textColor="#000"
            android:button="@null"
            android:background="@drawable/radio_btn_check"
            android:textSize="18sp"
            android:checked="true"
            />
        <RadioButton
            android:id="@+id/rb_4"
            android:nextFocusRight="@id/rb_3"
            android:layout_margin="10dp"
            android:layout_width="60dp"
            android:layout_height="30dp"
            android:gravity="center"
            android:text="女"
            android:textColor="#000"
            android:button="@null"
            android:layout_marginLeft="10dp"
            android:background="@drawable/radio_btn_check"
            android:textSize="18sp"
            />
        />
    </RadioGroup>
</RelativeLayout>

设置选中状态和未选中状态radioButton的背景状态,radio_btn_check.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true">//选中状态实心的背景
        <shape>
            <solid android:color="#F8BE12"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>
    <item>
        <shape>
            <stroke android:width="1dp"//非选中状态只有一个线框
               android:color="#F8BE12"/>
            <corners android:radius="5dp"/>
        </shape>
    </item>

演示结果:

同理CheckBox也是同样的部署,CheckBoxActivity.java文件代码

package com.example.firstapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class CheckBoxActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_check_box);
    }
}

activity_check_box.xml文件代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".CheckBoxActivity">
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你会那些移动开发"
        android:textSize="20sp"
        android:textColor="#000"
        android:layout_marginBottom="10dp"/>
    <CheckBox
        android:id="@+id/cb_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Android"
        android:textSize="20sp"
        android:layout_below="@+id/tv_title"
        android:layout_marginBottom="10dp"
        />
    <CheckBox
        android:id="@+id/cb_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="IOS"
        android:textSize="20sp"
        android:layout_below="@+id/cb_1"
        android:layout_marginBottom="10dp"
        />
    <CheckBox
        android:id="@+id/cb_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="H5"
        android:textSize="20sp"
        android:layout_below="@+id/cb_2"
        android:layout_marginBottom="10dp"
        />
    <CheckBox
        android:id="@+id/cb_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="其他"
        android:textSize="20sp"
        android:layout_below="@+id/cb_3"
        />
</RelativeLayout>
mainActivity.java文件对CheckOut文件的部署
private Button mBtnCheckOut;
mBtnCheckOut = (Button)findViewById(R.id.btn_cb);
private void setListeners(){
    ......
    mBtnCheckOut.setOnClickListener(onclick);
}
private class OnClick implements View.OnClickListener{
    @Override
    public void onClick(View v){
        Intent intent = null;
        switch (v.getId()){
           ......
            case R.id.btn_cb:
                intent=new Intent(MainActivity.this,CheckBoxActivity.class);
                break;
        }
        startActivity(intent);
    }
}

最终演示效果

 

activity_check_box.xml,在添加一些内容到复选框界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".CheckBoxActivity">
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="你会那些移动开发"
        android:textSize="20sp"
        android:textColor="#000"
        android:layout_marginBottom="10dp"/>
    <CheckBox
        android:id="@+id/cb_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Android"
        android:textSize="20sp"
        android:layout_below="@+id/tv_title"
        android:layout_marginBottom="10dp"
        />
    <CheckBox
        android:id="@+id/cb_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="IOS"
        android:textSize="20sp"
        android:layout_below="@+id/cb_1"
        android:layout_marginBottom="10dp"
        />
    <CheckBox
        android:id="@+id/cb_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="H5"
        android:textSize="20sp"
        android:layout_below="@+id/cb_2"
        android:layout_marginBottom="10dp"
        />
    <CheckBox
        android:id="@+id/cb_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="其他"
        android:textSize="20sp"
        android:layout_below="@+id/cb_3"
        android:layout_marginBottom="10dp"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_below="@id/cb_4"
        >
        <TextView
            android:id="@+id/tv_title1"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="你的兴趣"
            android:textColor="#000"
            android:textSize="20sp"
            />
        <CheckBox
            android:id="@+id/cb_5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="学习"
            android:paddingLeft="10dp"
            android:checked="true"
            android:button="@drawable/checkbox_bg"
            android:textSize="20sp"
            />
        <CheckBox
            android:id="@+id/cb_6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="玩"
            android:paddingLeft="10dp"
            android:button="@drawable/checkbox_bg"
            android:textSize="20sp"
            />
    </LinearLayout>
</RelativeLayout>

drawable/check_bg.xml文件布局,checked_checkbox.png和unchecked_checkbox.png分别是两个表示选中和未选中的图片

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@drawable/checked_checkbox"/>
    <item android:state_checked="false" android:drawable="@drawable/unchecked_checkbox"/>
</selector>

CheckBoxActivity.java

package com.example.firstapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;

public class CheckBoxActivity extends AppCompatActivity {
    private CheckBox mCb5,mCb6;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_check_box);
        mCb5 = (CheckBox)findViewById(R.id.cb_5);
        mCb6 = (CheckBox)findViewById(R.id.cb_6);
        mCb5.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                Toast.makeText(CheckBoxActivity.this, isChecked?"5选中":"5未选中", Toast.LENGTH_SHORT).show();//设置选中状态改变事件
            }
        });
        mCb6.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                Toast.makeText(CheckBoxActivity.this, isChecked?"6选中":"6未选中", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

mainActivity.xml布局

<Button
    android:id="@+id/btn_cb"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="CheckBox"
   />

mainActivity.java文件代码部署

private Button mBtnCheckOut;
mBtnCheckOut = (Button)findViewById(R.id.btn_cb);
private void setListeners(){
    ......
    mBtnCheckOut.setOnClickListener(onclick);
}
private class OnClick implements View.OnClickListener{
    @Override
    public void onClick(View v){
        Intent intent = null;
        switch (v.getId()){
           ......
            case R.id.btn_cb:
                intent=new Intent(MainActivity.this,CheckBoxActivity.class);
                break;
        }
        startActivity(intent);
    }
}

结果演示,选中和未选中作为事件弹出提示

button的一些其他衍生控件:ToggleButton,Switch

记录一下避免遗忘,skr~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值