android学习之旅(9)---选择和开关按钮

文章目录

    • 单选框和复选框
      • 示例程序
        • XML文件
        • .java文件
        • 运行结果
    • 状态开关按钮和开关
      • 示例程序
        • XML文件
        • .java文件
        • 运行结果

单选框和复选框

单选框(RadioButton)和复选框(CheckBox)都是继承时了Button类,因此它们都支持Button支持的各种属性和方法。RadioBurron和CheckBox的区别在于:一组RadioButton每次只能选择一个,所以RadioButton需要和RadioGroup一起使用。

示例程序

XML文件



    
    

        

        

        
    

    

    

        

            

            

            

            

            
        
    


.java文件

package com.kong.viewtext;

import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

/*
(1)创建一个继承了AppCompatActivity的类(Activity的本质就是类)
(2)在活动清单中声明该活动,不然会找不到。
(3)重写onCreate方法
(4)创建对应的XML文件(如果需要的话)
(5)设置该界面的UI(setContentView)
 */

public class RadioButtonTestActivity extends AppCompatActivity {
    private RadioGroup m_RadioGroup;
    private TextView m_TextView;
    private CheckBox check1,check2,check3,check4,check5;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_radiobutton_text);
        m_RadioGroup=findViewById(R.id.sexRadioGroup);
        m_RadioGroup.setOnCheckedChangeListener(new MyOnCheckedChange());
        m_TextView=findViewById(R.id.resultsTextView);

        CheckBoxCheckedChangeListener changeListener=new CheckBoxCheckedChangeListener();
        check1=findViewById(R.id.checkbox1);
        check1.setOnCheckedChangeListener(changeListener);
        check2=findViewById(R.id.checkbox2);
        check2.setOnCheckedChangeListener(changeListener);
        check3=findViewById(R.id.checkbox3);
        check3.setOnCheckedChangeListener(changeListener);
        check4=findViewById(R.id.checkbox4);
        check4.setOnCheckedChangeListener(changeListener);
        check5=findViewById(R.id.checkbox5);
        check5.setOnCheckedChangeListener(changeListener);

    }
    private class CheckBoxCheckedChangeListener implements CompoundButton.OnCheckedChangeListener
    {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked)
            {
                Toast.makeText(RadioButtonTestActivity.this,buttonView.getText(),Toast.LENGTH_SHORT).show();
            }
        }
    }
    //重写RadioGroup的onChangedListener
    private class MyOnCheckedChange implements RadioGroup.OnCheckedChangeListener
    {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            String str=((RadioButton)(group.findViewById(checkedId))).getText().toString();
            Toast.makeText(RadioButtonTestActivity.this,str,Toast.LENGTH_SHORT).show();
        }
    }
}

运行结果

android学习之旅(9)---选择和开关按钮_第1张图片

状态开关按钮和开关

转态开关按钮(ToggleButton)和开关(switch)也是由Button派生出来的,因此它们的本质也是按钮,Button支持的各种属性,方法也是用于ToggleButton和Switc。从功能上来看,ToggleButton、switch与CheckBox复选框非常的相似,它们都可以提供了两种状态。不过,ToggleButton、switch与checkBox的区别主要体现在功能上,ToggleButton、switch通常用于切换程序中的某种状态。

示例程序

XML文件




    

    

    



.java文件

package com.kong.viewtext;

import android.graphics.Color;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.ToggleButton;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class ToggleButtonTestActivity extends AppCompatActivity {
    private ImageView m_ImageLight;
    private ToggleButton m_ToggleButton;
    private LinearLayout m_Linear;
    private Switch m_Switch;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_togglebutton_test);
        m_ImageLight = findViewById(R.id.imageLight);
        m_ToggleButton = findViewById(R.id.toggleButton);
        m_Linear = findViewById(R.id.linear);
        m_Switch = findViewById(R.id.switchDark);

        //m_Switch.setOnCheckedChangeListener(new ToggleButtonOnCheckChange());

        m_ToggleButton.setOnCheckedChangeListener(new ToggleButtonOnCheckChange());
    }

    private class ToggleButtonOnCheckChange implements CompoundButton.OnCheckedChangeListener {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {
                m_ImageLight.setImageResource(R.drawable.off_light);
                if (m_Switch.isChecked()) {
                    //当点击黑夜模式时,关灯后背景为黄色
                    m_Linear.setBackgroundColor(Color.rgb(255, 255, 0));
                }
                else
                {
                    //当点击黑夜模式时,关灯后的背景为黑色
                    m_Linear.setBackgroundColor(Color.rgb(0, 0, 0));
                }
            } else {
                m_ImageLight.setImageResource(R.drawable.on_light);
                m_Linear.setBackgroundColor(Color.rgb(255, 255, 255));
            }
        }
    }
}

运行结果

android学习之旅(9)---选择和开关按钮_第2张图片

你可能感兴趣的:(Android学习)