本文以一个简单的小例子,简述在Android开发中ToggleButton(开关按钮)和Switch(开关)的简单使用,仅供学习分享使用。

概述

ToggleButton是一个有两种状态(checked/unchecked)的按钮,经常用于开/关等场景中,默认文本显示(ON/OFF),Switch 是一个拥有两种状态的控件,具有滑动的效果。

ToggleButton

ToggleButton涉及知识点如下:

  1. android:textOff 设置未选中时显示的文本内容,默认为OFF。
  2. android:textOn 设置选中时显示的文本内容,默认为ON。
  3. android:disabledAlpha 控件禁用时的透明度,float类型,
  4. android:background 背景设置,可以用于设置一个图片或者资源文件
  5. setOnCheckedChangeListener 用于设置监听状态改变的事件
  6. OnCheckedChangeListener 状态监听事件,是一个接口,有一个函数需要实现
  7. onCheckedChanged(CompoundButton buttonView, boolean isChecked) 监听事件需要实现的函数

ToggleButton示例效果图如下:

ToggleButton源码

(xml)源码如下:

  <TextView
android:id="@+id/tv_toggle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/sp_info"
android:textSize="15dp"
android:layout_marginBottom="10dp"
android:text="@string/tv_toggle"/>
<ToggleButton
android:id="@+id/tb_info"
android:textOff=""
android:textOn=""
android:layout_marginBottom="10dp"
android:background="@drawable/toggle_selector"
android:layout_below="@id/tv_toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

关于toggle_selector资源文件如下(资源文件中的on和off对应图片):

 <?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/on"></item>
<item android:state_checked="false" android:drawable="@drawable/off"></item>
</selector>

实现监听事件的源码如下:

 mToggleButton =(ToggleButton) this.findViewById(R.id.tb_info);
mToggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
String info="当前状态是:"+(isChecked?"打开":"关闭");
Toast.makeText(MainActivity.this,info,Toast.LENGTH_LONG).show();
}
});

Switch控件

Switch涉及知识点如下:

  1. android:textOff 设置未选中时显示的文本内容,默认为OFF。
  2. android:textOn 设置选中时显示的文本内容,默认为ON。
  3. android:thumb:滑块的图片
  4. android:showText:设置on/off的时候是否显示文字,boolean
  5. android:splitTrack:是否设置一个间隙,让滑块与底部图片分隔,boolean
  6. setOnCheckedChangeListener 用于设置监听状态改变的事件
  7. OnCheckedChangeListener 状态监听事件,是一个接口,有一个函数需要实现
  8. onCheckedChanged(CompoundButton buttonView, boolean isChecked) 监听事件需要实现的函数

Switch示例效果图如下:

Switch源码

xml源码如下(其中的toggle_selector和上面一样,设置选中和未选中时的图片):

 <Switch
android:id="@+id/sw_info"
android:textOff=""
android:textOn=""
android:background="@drawable/toggle_selector1"
android:track="@drawable/toggle_selector1"
android:layout_below="@id/tb_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

监听事件源码如下:

 mSwitch =(Switch)this.findViewById(R.id.sw_info);
mSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
String info="当前状态是:"+(isChecked?"打开":"关闭");
Toast.makeText(MainActivity.this,info,Toast.LENGTH_LONG).show();
}
});

备注

ToggleButton和Switch是很常见的基础性控件,简单易用,场景广泛,本文旨在抛砖引玉,希望大家共同学习。

一起学Android之ToggleButton和Switch的更多相关文章

  1. Android的ToggleButton和Switch以及AnalogColok和DigitalColok的用法-android学习之旅(二十)

    ToggleButton 和Switch简介 ToggleButton 和Switch都是继承了Button,所以他们的属性设置和Button差不多. 分别支持的属性 ToggleButton 的属性 ...

  2. android开关控件Switch和ToggleButton

    序:今天项目中用到了开关按钮控件,查阅了一些资料特地写了这篇博客记录下. 1.Switch <Switch android:id="@+id/bt" android:layo ...

  3. Android零基础入门第21节:ToggleButton和Switch使用大全

    原文:Android零基础入门第21节:ToggleButton和Switch使用大全 上期学习了CheckBox和RadioButton,那么本期来学习Button的另外两个子控件ToggleBut ...

  4. Android基础控件ToggleButton和Switch开关按钮

    1.简介 ToggleButton和Switch都是开关按钮,只不过Switch要Android4.0之后才能使用! ToggleButton <!--checked 是否选择--> &l ...

  5. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

  6. ToggleButton与Switch

    状态开关按钮togglebutton和开关switch 状态开关按钮togglebutton和开关switch是由button派生出来的,本质也是按钮,支持BUtton的各种属性,从功能上看,Togg ...

  7. 设置ToggleButton、Switch、CheckBox和RadioButton的显示效果

    ToggleButton.Switch.CheckBox和RadioButton都是继承自android.widget.CompoundButton,意思是可选择的,因此它们的用法都很类似.Compo ...

  8. 一步一步学android控件(之六) —— MultiAutoCompleteTextView

    今天学习的控件是MultiAutoCompleteTextView . 提到MultiAutoCompleteTextView 我们就自然而然地想到AutoCompleteTextView ,就想知道 ...

  9. android的toogleButton和switch的使用方法

    这两个是button开关.监听CheckedChangeListener toggle_layout.xml: <? xml version="1.0" encoding=& ...

随机推荐

  1. Redis的正确使用姿势

    前言 说到分布式缓存,可能大多数人脑海浮现的就是redis了,为什么redis能够在竞争激烈的缓存大战中脱颖而出呢?原因无非有一下几点:性能好,丰富的特性跟数据结构,api操作简单.但是用的人多了,就 ...

  2. Vue源码解析(二):数据驱动

    一.数据驱动: 数据驱动是vue.js最大的特点.在vue.js中,数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom.数据驱动还有一部分是数据更新驱动视图变化. ...

  3. html基础复习

    1.标签选择器   div{}   2.类选择器   .one class="one"   3.id选择器(定义+调用)   #one{} id="one"   ...

  4. openlayers4 入门开发系列之热力图篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  5. 自己手动搭建jenkins教程

    下载列表;  http://updates.jenkins-ci.org/download/war/ 本次下载: http://updates.jenkins-ci.org/download/war/ ...

  6. 20190429 - 如何访问 macOS 的 httpd、mysql 等服务

    问题:在局域网,通过其它机器访问 macOS 上的服务时,提示拒绝. 解决:将 macOS 防火墙 80.3306 端口打开. macOS 内置防火墙,也许开启了防火墙.Icefloor 是一个老牌的 ...

  7. 002_Python多线程相当于单核多线程的论证

    很多人都说python多线程是假的多线程!下面进行论证解释: 一. 我们先明确一个概念,全局解释器锁(GIL) Python代码的执行由Python虚拟机(解释器)来控制.Python在设计之初就考虑 ...

  8. Mysql中concat()、concat_ws()和 group_concat()的用法

    一.CONCAT()函数CONCAT()函数用于将多个字符串连接成一个字符串.使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为+----+ ...

  9. 关于.Net mvc 项目在本地vs运行响应时间过长无法访问时,解决方法!

    最近可能是刚升级了电脑使用了window10操作系统,总是遇到了一些以前没有遇到过的事情! 今早来到公司本来准备写bug的,但是当我打开vs运行的时候发现今天的电脑响应的时间明显的要比之前打开网页调试 ...

  10. Python爬虫11-XML与XPath概述及lxml库的应用

    GitHub代码练习地址:用lxml解析HTML,文件读取,etree和XPath的配合使用:https://github.com/Neo-ML/PythonPractice/blob/master/ ...