Android开发 CompoundButton CheckBox Switch RadioButton

1.CompoundButton

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

Android开发 CompoundButton CheckBox Switch RadioButton_第1张图片

 2.CheckBox 复选框

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

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

checkbox_selector.xml:




    
    

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

Android开发 CompoundButton CheckBox Switch RadioButton_第2张图片

 

 和普通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 开关

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

属性:

 Android开发 CompoundButton CheckBox Switch RadioButton_第3张图片

 简单实现代码

xml:




    

    


        


        

    


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张图片

4.RadioButton 单选 

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

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

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

代码:

xml:




    


    
        

        



    

    

 

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_第5张图片

你可能感兴趣的:(APP开发,android)