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

单选框和复选框

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

示例程序

XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="15dp">
    <!--单选框必须放在单选组框中-->
    <RadioGroup
        android:id="@+id/sexRadioGroup"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingLeft="15dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:text="性别:"
            android:textColor="@color/colorBlue"
            android:textSize="24sp" />

        <RadioButton
            android:id="@+id/manRadioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="15dp"
            android:text="男"
            android:textSize="24sp" />

        <RadioButton
            android:id="@+id/womenRadioButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"
            android:textSize="24sp" />
    </RadioGroup>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:paddingLeft="25dp"
        android:text="你喜欢吃的食物:"
        android:textColor="@color/colorOrange"
        android:textSize="22sp" />

    <HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="15dp">

            <CheckBox
                android:id="@+id/checkbox1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="西红柿"
                android:textSize="24sp" />

            <CheckBox
                android:id="@+id/checkbox2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="辣椒"
                android:textSize="24sp" />

            <CheckBox
                android:id="@+id/checkbox3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="白菜"
                android:textSize="24sp" />

            <CheckBox
                android:id="@+id/checkbox4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="土豆"
                android:textSize="24sp" />

            <CheckBox
                android:id="@+id/checkbox5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="鸡蛋"
                android:textSize="24sp" />
        </LinearLayout>
    </HorizontalScrollView>
</LinearLayout>

.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();
        }
    }
}

运行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ug6qRf6B-1575802526964)(./RadioButton运行结果.png)]

状态开关按钮和开关

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

示例程序

XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal"
    android:padding="15dp">

    <ImageView
        android:id="@+id/imageLight"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/on_light"
        android:layout_marginBottom="20dp"/>

    <ToggleButton
        android:id="@+id/toggleButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textOn="开灯"
        android:textOff="关灯"
        android:textSize="24sp"
        android:background="@color/colorIndigo"/>

    <Switch
        android:id="@+id/switchDark"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="黑夜模式"
        android:textColor="@color/colorOrange"
        android:layout_gravity="left"
        android:textSize="24sp"/>

</LinearLayout>

.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));
            }
        }
    }
}

运行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dqyD1VNh-1575802526968)(./light运行效果.png)]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
按钮选择Android UI设计中经常用到的一种控件,它通常用于让用户从多个选项中选择一个或多个选项。在本文中,我将为您介绍如何在Android应用程序中实现多按钮选择。 1. RadioButton RadioButton是一种常见的多按钮选择控件,它通常与RadioGroup一起使用。RadioGroup可以将多个RadioButton组合在一起,并自动控制只有一个RadioButton被选中。 以下是实现多按钮选择RadioButton示例代码: ```xml <RadioGroup android:id="@+id/radio_group" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RadioButton android:id="@+id/radio_button_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1"/> <RadioButton android:id="@+id/radio_button_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 2"/> <RadioButton android:id="@+id/radio_button_3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 3"/> </RadioGroup> ``` 2. CheckBox CheckBox是另一种常见的多按钮选择控件,它通常用于选择多个选项。与RadioButton不同,CheckBox可以同时选择多个选项。 以下是实现多按钮选择CheckBox示例代码: ```xml <CheckBox android:id="@+id/checkbox_1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 1"/> <CheckBox android:id="@+id/checkbox_2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 2"/> <CheckBox android:id="@+id/checkbox_3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 3"/> ``` 3. ToggleButton ToggleButton是一种可以在两个状态之间切换的按钮,它通常用于打开或关闭某些功能。与RadioButtonCheckBox不同,ToggleButton只有两个状态。 以下是实现多按钮选择ToggleButton示例代码: ```xml <ToggleButton android:id="@+id/toggle_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textOn="On" android:textOff="Off"/> ``` 这些是Android中实现多按钮选择的常见控件,您可以根据自己的需求选择适合您应用程序的控件。希望本文能够对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值