Android 学习笔记(4)—— ToggleButton 、Switch

作者:夏至  欢迎转载,也请保留这段申明,谢谢

在UI中呢,开关按钮中呢,我们使用最多是ToggleButton 和 Switch,不过Switch支持4.0以上的SDK,低于4.0的会报错,那么他们两个的性质是一样的,这里我们就同一来实现这些效果.

要实践的效果图

1)ToggleButton(开关按钮)

可供我们设置的属性:

android:textOff:按钮没有被选中时显示的文字

android:textOn:按钮被选中时显示的文字

所以,我们对togglebutton的设置如下

  1. <ToggleButton
  2.     android:id="@+id/togglebutton"
  3.     android:layout_width="wrap_content"
  4.     android:layout_height="wrap_content"
  5.     android:checked="true"
  6.     android:textOn="横向排列"
  7.     android:textOff="纵向排列"
  8. />

 2) Switch(开关)

    可供我们设置的属性:

android:showText:设置on/off的时候是否显示文字,boolean

android:splitTrack:是否设置一个间隙,让滑块与底部图片分隔,boolean

android:switchMinWidth:设置开关的最小宽度

android:switchPadding:设置滑块内文字的间隔

android:switchTextAppearance:设置开关的文字外观,暂时没发现有 什么用...

android:textOff:按钮没有被选中时显示的文字

android:textOn:按钮被选中时显示的文字

android:textStyle:文字风格,粗体,斜体写划线那些

android:track:底部的图片

android:thumb:滑块的图片

注意! 默认情况下,textOff为关闭,textOn 为打开

所以,我们对switch的配置如下:

  1. <Switch
  2.     android:id="@+id/swichd"
  3.     android:showText="true"
  4.     android:splitTrack="true"
  5.     android:layout_width="wrap_content"
  6.     android:layout_height="wrap_content"
  7.     android:textOff="纵向排列"
  8.     android:textOn="横向排列">

那么,我们实现上面的横向和竖向的反转,最简单的就是多写一个线性布局,嵌到第一个里面,简单的来说,就是在上面的基础上写下下面这些代码

  1. <LinearLayout
  2.     xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:id="@+id/Mylayout"
  4.     android:orientation="vertical"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="wrap_content">
  7. <Button
  8.     android:id="@+id/button1"
  9.     android:layout_width="wrap_content"
  10.     android:layout_height="wrap_content"
  11.     android:text="按键1"/>
  12. <Button
  13.         android:id="@+id/button2"
  14.         android:layout_width="wrap_content"
  15.         android:layout_height="wrap_content"
  16.         android:text="按键2"/>
  17. <Button
  18.         android:id="@+id/button3"
  19.         android:layout_width="wrap_content"
  20.         android:layout_height="wrap_content"
  21.         android:text="按键3"/>
  22. </LinearLayout>

Ok,我们布局已经写好,那么接下来就是对主活动代码书写了。

  1. ....
  2. toggleButton = (ToggleButton)findViewById(R.id.togglebutton);
  3. aSwitch = (Switch)findViewById(R.id.swichd);
  4. final LinearLayout linearLayout = (LinearLayout)findViewById(R.id.Mylayout);
  5. aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  6. @Override
  7. // Switch按键状态变换时触发按钮
  1. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  2. if(buttonView.isChecked()){
  3. linearLayout.setOrientation(LinearLayout.HORIZONTAL); //竖直
  4. }else{
  5. linearLayout.setOrientation(LinearLayout.VERTICAL); //竖直
  6. }
  7. }
  8. });
  9. // ToggleButon 按键状态改变触发按钮
  10. toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
  11. @Override
  12. public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
  13. if(buttonView.isChecked()){
  14.     linearLayout.setOrientation(LinearLayout.HORIZONTAL); //竖直
  15. }else{
  16.    linearLayout.setOrientation(LinearLayout.VERTICAL); //竖直
  17. }
  18. }
  19. });

这样就能实现上面的效果了,其中还多了个开关switch哦,快去实践一下吧。


 




如有错误,欢迎指出,如果喜欢,欢迎收藏!







来自为知笔记(Wiz)

时间: 2024-10-23 16:05:19

Android 学习笔记(4)—— ToggleButton 、Switch的相关文章

Android学习笔记_S01_E01 ToggleButton(开关按钮)和Swith(开关)的功能与用法

一.基本定义 ToggleButton(开关按钮)和Swith(开关)都是Button派生出来的,它们的本质也是按钮,也支持Button的各种属性.方法. ToggleButton和Swith通常用于切换程序中的某种状态. 二.属性 1.ToggleButton支持的XML属性及相关方法 xml属性 相关方法 说明 android:checked setCheck(boolean) 设置该按钮是否被选中 android:textOff   设置当该按钮的状态关闭时显示的文本 android:te

Pro Android学习笔记(十二):了解Intent(下)

解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键就是component 名字,在<intent-fliter>中声明的其他属性被忽略.对于implicit intent,则根据action,category和data来进行匹配.然而一个intent fliter中可以声明多个actions,多个categories,多个data属性,因此可以满

Pro Android学习笔记(十):了解Intent(上)

Android引入了Intent的概念来唤起components,component包括:1.Activity(UI元件) 2.Service(后台代码) 3.Broadcast receiver(处理广播消息的代码) 4.Content provider(抽象数据的代码) Intent基本含义 intent是通知平台处理(唤起)的动作.Android唤起的动作将取决于注册了什么动作.例如我们有个简单的Activity:IntentBaiscViewActivity.在AndroidManife

Android学习笔记(四二):SQLite、ListView、ContextMenu

继续上一个例子,结合ListView中对SQLite进行操作. 通过CursorAdapter在ListView中的数据呈现 在上一个例子中,我们可以对SQLite中的数据库进行增删改查,将数据读到游标Cursor中,然后一一读出.在Android中可以通过CursorAdapter直接将数据映射到ListView中,如下处理: public class Chapter22Test1 extends ListActivity{    private SQLiteDatabase  db = nu

Android 学习笔记(二七):Menu

Menu由两种形式,Option menu和Context menu.前者是按下设备的Menu硬按钮弹出,后者是长按widget弹出. Option Menu 当我们按下Menu的硬件按钮时,Option Menu将被触发显示,最多可以显示6个选项的icon菜单,如果选项多于6个,第6个选项显示为“More“,点击可以进入扩展菜单.我们将在Android学习笔记(十一):Activity-ListView的例子一的基础上来学习Option Menu,也就是一个基于activity的菜单. 在这个

Android学习笔记(四六):互联网通信-文件下载

在Android 2.3引入了DownloadManager可以处理复杂的文件下载,包括检查用户是否有数据联系(WIFI或者移动数据),当用户从一个有数据连接的地方移动到无连接的地方(例如离开了wifi或者3G data的access point),确保设备在下载过程中保持awake状态.DownloadManager可以处理HTTP URLs,但是不能处理HTTPS(SSL) URLs. 设置下载文件条件许可 在这个例子,将学习通过DownloadManager从Internet下载文件,并存

Android学习笔记(七)——显示对话框窗口

显示对话框窗口 1.创建Dialog1项目,在activity_main.xml文件中添加一个Button: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:l

Android学习笔记(三七):再谈屏幕切换

切换需注意数据保存和恢复 在Android学习笔记(三六):横屏竖屏的切换中,我们配置了两个layout,一个用户普通的portrait,一个用户landsapce方式.如果只有一个layout,我们沿用上一个例子,删除了在layout-land/中的xml文件,则在屏幕切换时,会按照原来的排版,适配新的屏幕.程序我进行了简化,每按一次pick,就加一,用此来跟踪是否需要进行数据保存和恢复,如下: [java] view plaincopy public class Chapter19Test3

Pro Android学习笔记 ActionBar(1):Home图标区

 Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ? 综合 ? 共 3256字 ? 字号 小 中 大 ? 评论关闭 ActionBar在Android 3.0 SDK中为平板引入,在4.0中也可以在phone中使用.在title中提供类似tab和菜单的效果,有三种形式:Tabbed action bar,list action bar和standard action bar,我们将在小例子中进行示范. Home Icon 在Actio

【转】Pro Android学习笔记(四):了解Android资源(下)

处理任意的XML文件 自定义的xml文件放置在res/xml/下,可以通过R.xml.file_name来获取一个XMLResourceParser对象.下面是xml文件的例子: <rootname="tom"><--也可以是<root>,本次采用带参数的方式作为实验-->    <leaf>Hello from an elementtest.</leaf>   <leaf>Hello World!</lea