状态开关按钮(ToggleButton)及按钮(Swich)的使用

      状态开关按钮(ToggleButton)和开关(Switch)也是由Button派生出来的,因此它们本质上都是按钮,Button支持的各种属性、方法也适用于ToggleButton和Switch。从功能上看,ToggleButton、Switch和CheckBox复选框非常相似,都能提供两种状态,但是它们区别主要在功能上。ToggleButton和Switch主要用于切换程序中的状态。

      今天我们通过开关的切换从而改变我们页面的布局。

一、首先我们来看看这两个开关的使用方法

Switch支持的XML属性和相关方法:

                                 

ToggleButton支持的XML属性及相关方法:

                                 

 

二、在布局文件中增加ToggleButton和Switch按钮,随着按钮的改变,界面布局中LinearLayout布局在水平与垂直布局中切换。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><!-- 定义一个ToggleButton-切换按钮--><ToggleButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textOff="纵向排列"android:textOn="横向排列"android:id="@+id/toggleButton"android:checked="false" /><Switchandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:textOff="纵向排列"android:textOn="横向排列"android:thumb="@drawable/check"android:id="@+id/switch1"android:checked="true" /><!-- 定义一个可以改变方向的布局--><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/test"android:orientation="vertical"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="按钮一"android:id="@+id/button" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="按钮二"android:id="@+id/button2" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="按钮三"android:id="@+id/button3" /></LinearLayout></LinearLayout>

三、已经有了按钮,但是如何让它们能随着事件而切换呢?接下来,我们就为ToggleButton和Switch按钮绑定事件。即当状态发生改变时,布局也随之发生改变。

package happy.togglebutton;import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.ToggleButton;public class MainActivity extends AppCompatActivity {ToggleButton toggle ;Switch   switcher ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test);toggle = (ToggleButton)findViewById(R.id.toggleButton);switcher = (Switch)findViewById(R.id.switch1);final LinearLayout test = (LinearLayout)findViewById(R.id.test);CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if(isChecked){//设置LineLayout的垂直布局test.setOrientation(1);toggle.setChecked(true);switcher.setChecked(true);}else{//设置LineLatout的水平布局test.setOrientation(0);toggle.setChecked(false);switcher.setChecked(false);}}};toggle.setOnCheckedChangeListener(listener);switcher.setOnCheckedChangeListener(listener);}
}

四、我们来看看效果。

切换前:

切换后:

 

转载于:https://www.cnblogs.com/starluo/p/4996011.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/419282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库的垂直切分和水平切分

数据切分可以是物理上的&#xff0c;对数据通过一系列的切分规则将数据分布到不同的DB服务器上&#xff0c;通过路由规则路由访问特定的数据库&#xff0c;这样一来每次访问面对的就不是单台服务器了&#xff0c;而是N台服务器&#xff0c;这样就可以降低单台机器的负载压力。 …

【笔试强化】Day 8

文章目录 一、单选1.2.3.4.5.6.7.8.9.10. 二、编程1. 求最小公倍数解法&#xff1a;代码&#xff1a; 2. 两种排序方法解法&#xff1a;代码&#xff1a; 一、单选 1. 正确答案&#xff1a;B2. 正确答案&#xff1a;A继承具有传递性 3. 正确答案&#xff1a;C数组不是原生类&…

前端学习(1678):前端系列实战课程之声明和创建游戏地图

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戏初始化界面</title><style>body {ma…

前端学习(1679):前端系列实战课程之为蛇创建食物对象

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戏初始化界面</title><style>body {ma…

前端学习(1680):前端系列实战课程之创建和显示蛇

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戏初始化界面</title><style>body {ma…

前端学习(1681):前端系列实战课程之让蛇动起来

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戏初始化界面</title><style>body {ma…

Python 第五天

开放封闭原则 开发&#xff1a;对于未存在的开放 封闭&#xff1a;对于已存在的代码封闭 装饰器 1、装饰器就是一个函数&#xff0c;至少2层 2、 执行auth函数&#xff0c;被装饰的函数作为参数auth&#xff08;foo&#xff09; auth函数的返回值&#xff0c;赋值给被装饰的函数…

分布式队列编程:模型、实战

介绍 作为一种基础的抽象数据结构&#xff0c;队列被广泛应用在各类编程中。大数据时代对跨进程、跨机器的通讯提出了更高的要求&#xff0c;和以往相比&#xff0c;分布式队列编程的运用几乎已无处不在。但是&#xff0c;这种常见的基础性的事物往往容易被忽视&#xff0c;使用…

奇怪的剪贴板

下午碰到一个奇怪事情&#xff0c;同一个局域网内的不同主机的剪贴板内容竟然可以共享。还不知道是什么原因导致的。 如下图&#xff0c;在主机A上复制一个字符串。 或者在主机A上复制一张图。&#xff08;文件也可以&#xff09; 然后在主机B上分别粘贴 是不是很神奇~~&#x…

nGrinder性能测试平台搭建(LVS压力测试)

1、 nGrinder是什么 nGrinder是一个免费的、开放源代码的Web性能测试平台。运行在应用中间件服务器中运行。它由一个控制端和多个代理端组成。通过控制端&#xff08;浏览器访问&#xff09;建立测试场景&#xff0c;然后通过分发到代理端进行压力测试&#xff0c;是一个分布式…

前端学习(1682):前端系列实战课程之让蛇改变方向

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戏初始化界面</title><style>body {ma…

第十二周学习总结

信息安全系统设计基础第十二周学习总结 【学习时间&#xff1a;8 小时】 【学习内容&#xff1a;process文件夹中的代码理解和执行、故障排除】 一、代码理解 1.env文件夹-environ.c代码 #include <stdio.h> #include <stdlib.h> int main(void) { printf("PA…

前端学习(1683):前端系列实战课程之让蛇吃食物变长

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戏初始化界面</title><style>body {ma…

当你在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?请从技术的角度描述,如浏览器、网络(UDP、TCP、HTTP等),以及服务器等各种参与对象上由此引发的一系

1.DNS域名解析&#xff1a;浏览器缓存、系统缓存、路由器、ISP的DNS服务器、根域名服务器。把域名转化成IP地址。2.与IP地址对应的服务器建立TCP连接&#xff0c;经历三次握手&#xff1a;SYN&#xff0c;ACK、SYN&#xff0c;ACK3.以get&#xff0c;post方式发送HTTP请求&…

前端学习(1684):前端系列实战课程之判断游戏结束

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戏初始化界面</title><style>body {ma…

前端学习(1685):前端系列实战课程之设置难度

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>游戏初始化界面</title><style>body {ma…

技能UP:SAP OBYC自动记账的实例说明(含value String应用说明)

一. 自动过账原理 在MM模块的许多操作都能实现在FI模块自动过账&#xff0c;如PO收货、发票验证(LIV)、工单发料、向生产车间发料等等。不用说&#xff0c;一定需要在IMG中进行配置才可以实现自动处理。但SAP实现的这种自动配置的机制是怎样的呢&#xff1f;其实也并不复杂&…