Android开发 CompoundButton CheckBox Switch RadioButton

Android开发 CompoundButton CheckBox Switch RadioButton和CheckBox类似,可以通过点击来选择开或关,可以通过实现setOnCheckedChangeListener()来监听开关。所以需要一个容器来存储同一组的单选按钮,这个容器就是RadioGroup,实际上是一个布局,默认是垂直布局。和普通Button一样,CheckBox也可以设置监听,根据是否选中,做出不同反应。单选按钮与前面的复选框和switch的不同在于,它是一组单选按钮,每次只能选中一个。效果图:第一排是默认的CheckBox的效果,第二排是我自定义的。),可以设置勾选时和取消勾选时的图片。

1.CompoundButton

抽象了各种复合按钮的一个抽象类,继承自Button类。

Android开发 CompoundButton CheckBox Switch RadioButton

 2.CheckBox 复选框

有默认的复选框,设置宽高文字内容就可以直接用。

也可以在drawable下新建一个状态列表图形(Android开发 Drawable_绿风天空的博客-CSDN博客),可以设置勾选时和取消勾选时的图片。

checkbox_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/n2" android:state_checked ="false"></item>
    <item android:drawable="@drawable/y1" android:state_checked="true" ></item>

</selector>

效果图:第一排是默认的CheckBox的效果,第二排是我自定义的

Android开发 CompoundButton CheckBox Switch RadioButton

Android开发 CompoundButton CheckBox Switch RadioButton 

 和普通Button一样,CheckBox也可以设置监听,根据是否选中,做出不同反应。

package com.example.ch3;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;

public class CheckboxActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_checkbox);

        CheckBox cb1 = findViewById(R.id.cb1);
        CheckBox cb2 = findViewById(R.id.cb2);

        cb1.setOnCheckedChangeListener(this);
        cb2.setOnCheckedChangeListener(this);

    }

    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        String s = String.format("You %s  this CheckBox", b?"checked":"canceled");
        compoundButton.setText(s);
    }
}

3.Switch 开关

Android开发 CompoundButton CheckBox Switch RadioButton

和CheckBox类似,可以通过点击来选择开或关,可以通过实现setOnCheckedChangeListener()来监听开关。

属性:

 Android开发 CompoundButton CheckBox Switch RadioButton

 简单实现代码

xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".SwitchActivity"
    android:orientation="vertical"

    >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv1"
        android:textSize="30dp"

        ></TextView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


        <TextView
            android:id="@+id/tv2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="data usage"
            android:textSize="30dp"
            ></TextView>


        <Switch
            android:id="@+id/sw1"
            android:layout_width="60dp"
            android:layout_height="30dp"
            ></Switch>

    </LinearLayout>


</LinearLayout>

java:

package com.example.ch3;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView;


public class SwitchActivity extends AppCompatActivity implements  CompoundButton.OnCheckedChangeListener {

    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_switch);
        Switch sw = findViewById(R.id.sw1);
        sw.setOnCheckedChangeListener(this);

        tv = findViewById(R.id.tv1);
    }


    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
        tv.setText(String.format("switch %s ", b?"on":"off"));
    }
}

效果图:

Android开发 CompoundButton CheckBox Switch RadioButton

4.RadioButton 单选 

单选按钮与前面的复选框和switch的不同在于,它是一组单选按钮,每次只能选中一个。

所以需要一个容器来存储同一组的单选按钮,这个容器就是RadioGroup,实际上是一个布局,默认是垂直布局。

监听也是监听整组单选按钮。

代码:

xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".RadioButtonActivity"
    android:orientation="vertical"
    >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="30dp"
        android:text="Do you like this app?"></TextView>


    <RadioGroup
        android:id="@+id/rg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <RadioButton
            android:id="@+id/rgy"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="yes"></RadioButton>

        <RadioButton
            android:id="@+id/rgn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="no"></RadioButton>



    </RadioGroup>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/tv"
        android:textSize="30dp"></TextView>

</LinearLayout>

 

java:

package com.example.ch3;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.RadioGroup;
import android.widget.TextView;

public class RadioButtonActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {

    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_radio_button);

        RadioGroup rg = findViewById(R.id.rg);
        tv = findViewById(R.id.tv);

        rg.setOnCheckedChangeListener(this);

    }

    @Override
    public void onCheckedChanged(RadioGroup radioGroup, int i) {
        switch(i){
            case R.id.rgy: tv.setText("Thank you very much!");
                            break;
            case R.id.rgn: tv.setText("Sorry!");
                            break;

        }
    }
}

效果图:

Android开发 CompoundButton CheckBox Switch RadioButton

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38056.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注