Android UI控件Switch的使用方法_android switch showtext-程序员宅基地

技术标签: UI  Switch  Android进阶之路  Android  

文章转载自:https://www.jb51.net/article/124942.htm

 

实战中,其实会发现以下代码,switch并不能显示文字,因为缺少了一行:

1

android:showText="true"

 

 

在Android中偶尔会用到开关,Switch就是一个简单易使用的不错的控件。

首先,在布局中添加上Switch控件:

1

2

3

4

5

6

7

8

9

<Switch

    android:id="@+id/s_v"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:switchMinWidth="20dp"

    android:textOn="on"

    android:textOff="off"

    android:thumb="@drawable/thumb"

    android:track="@drawable/track" />

以下是该控件的常用属性:

textOn:控件打开时显示的文字
textOff:控件关闭时显示的文字
thumb:控件开关的图片
track:控件开关的轨迹图片
typeface:设置字体类型
switchMinWidth:开关最小宽度
switchPadding:设置开关 与文字的空白距离
switchTextAppearance:设置文本的风格
checked:设置初始选中状态
splitTrack:是否设置一个间隙,让滑块与底部图片分隔(API 21及以上)
showText:设置是否显示开关上的文字(API 21及以上)

我们一般不会用该控件原本的样式,那么我们就需要自己修改样式了:

gray_thumb.xml:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

  android:shape="rectangle" >

 

  <!-- 高度40 -->

  <size android:height="40dp" android:width="40dp"/>

  <!-- 圆角弧度 20 -->

  <corners android:radius="20dp"/>

 

  <!-- 变化率 -->

  <gradient

    android:endColor="#ffffff"

    android:startColor="#ffffff" />

 

  <stroke android:width="1dp"

    android:color="#9e9e9e"/>

 

</shape>

green_thumb.xml:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

  android:shape="rectangle" >

 

  <!-- 高度40 -->

  <size android:height="40dp" android:width="40dp"/>

  <!-- 圆角弧度 20 -->

  <corners android:radius="20dp"/>

 

  <!-- 变化率 -->

  <gradient

    android:endColor="#ffffff"

    android:startColor="#ffffff" />

 

  <stroke android:width="1dp"

    android:color="#33da33"/>

 

</shape>

gray_track.xml:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

  android:shape="rectangle" >

 

  <!-- 高度  此处设置宽度无效-->

  <size android:height="20dp"/>

  <!-- 圆角弧度 15 -->

  <corners android:radius="25dp"/>

 

  <!-- 变化率 定义从左到右的颜色不变 -->

  <gradient

    android:endColor="#9e9e9e"

    android:startColor="#9e9e9e" />

 

</shape>

green_track.xml:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

 

  <!-- 高度40 -->

  <size android:height="20dp"/>

  <!-- 圆角弧度 20 -->

  <corners android:radius="25dp"/>

 

  <!-- 变化率 -->

  <gradient

    android:endColor="#33da33"

    android:startColor="#33da33" />

 

</shape>

thumb.xml:

1

2

3

4

5

6

7

8

<?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/green_thumb" />

  <item android:drawable="@drawable/gray_thumb" />

 

</selector>

track.xml:

1

2

3

4

5

6

7

8

<?xml version="1.0" encoding="utf-8"?>

<!-- 控制Switch在不同状态下,底下下滑条的颜色 -->

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

 

  <item android:state_checked="true" android:drawable="@drawable/green_track" />

  <item android:drawable="@drawable/gray_track" />

 

</selector>

在styles.xml中添加如下style:

1

2

3

4

5

6

7

<style name="s_true" parent="@android:style/TextAppearance.Small">

  <item name="android:textColor">#33da33</item>

</style>

 

<style name="s_false" parent="@android:style/TextAppearance.Small">

  <item name="android:textColor">#9b9b9b</item>

</style>

最后,只需要将控件实例化出来进行相应操作就可以了:

MainActivity.class:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

public class MainActivity extends Activity{

 

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    final Switch aSwitch = (Switch) findViewById(R.id.s_v);

    aSwitch.setChecked(false);

    aSwitch.setSwitchTextAppearance(MainActivity.this,R.style.x1);

    aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

      @Override

      public void onCheckedChanged(CompoundButton compoundButton, boolean b) {

        //控制开关字体颜色

        if (b) {

          aSwitch.setSwitchTextAppearance(MainActivity.this,R.style.s_true);

        }else {

          aSwitch.setSwitchTextAppearance(MainActivity.this,R.style.x1);

        }

      }

    });

  }

}

最终效果如下图:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/CodingRae/article/details/88792817

智能推荐

HTML基础语法总结_html基本语法共有几种-程序员宅基地

文章浏览阅读454次。Leftmargin topmargin用来调整链接或文字位置Text用来调整字体颜色点击进入百度页面 添加链接alink点击时链接 link当前显示链接 vlink点击后链接 主要用来控制链接字体的颜色bgcolor用来设置背景颜色background用来设置背景图片(GIF、JPG)background=fixed使背景图片成固定效果,不随滚动条_html基本语法共有几种

分享10个超级实用的Python自动化脚本_python写一个脚本-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏262次。在日常的工作学习当中,我们总会遇到各式各样的问题,其中不少的问题都是一遍又一遍简单重复的操作,不妨直接用Python脚本来自动化处理。今天我就给大家分享10个Python高级脚本,帮助我们减少无谓的时间浪费,提高工作学习中的效率。 喜欢记得收藏、关注、点赞。注:完整版代码、数据、技术交流文末获取给照片添加水印给照片添加水印的代码多种多样,下面这种的或许是最为简单的形式,from PIL import Imagefrom PIL import ImageFontfrom PIL import _python写一个脚本

《信息学奥赛一本通 初赛真题解析》第四章 阅读程序 第9节 树和图_信息学奥赛一本通+"第四章 阅读程序"+filetype:pptx-程序员宅基地

文章浏览阅读60次。《信息学奥赛一本通 初赛真题解析》第四章 阅读程序 第9节 树和图_信息学奥赛一本通+"第四章 阅读程序"+filetype:pptx

Android 类似360悬浮窗口实现源码-程序员宅基地

文章浏览阅读195次。当我们在手机上安装360安全卫士时,手机屏幕上时刻都会出现一个小浮动窗口,点击该浮动窗口可跳转到安全卫士的操作界面,而且该浮动窗口不受其他activity的覆盖影响仍然可见(多米音乐也有相关的和主界面交互的悬浮小窗口)。它能悬浮在手机桌面,且不受Activity界面的影响,说明该悬浮窗口是不隶属于Activity界面的,也就是说,他是隶属于启动它的应用程序所在进程。如360App所在的应用进程..._android 模仿360悬浮窗口

pgsql数据类型:二进制字符串_pgsql 如何把二进制文件直接放入数据库-程序员宅基地

文章浏览阅读2.7k次。二进制字符串名字存储尺寸描述bytea1或4字节外加真正的二进制串变长二进制串db=# create table demo_bytea(bytea bytea);插入插入文本db=# insert into demo_bytea values('123');INSERT 0 1db=# select * from demo_bytea; bytea---------- \x313233(1 row)插入转义类型这个不是很理解,什么叫转义类型,我的_pgsql 如何把二进制文件直接放入数据库

oracle的update用法,Oracle中的select for update 用法(转)-程序员宅基地

文章浏览阅读1.0k次。通常情况下,select语句是不会对数据加锁,不会妨碍影响其他的DML和DDL操作。借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作。当只允许一个session进行update的时候, for update十分有用.在select…for update之后,可以使用of子句选择对select的特定数据表进行加锁操作。默认情况下,不使用of子句表示在select所有的数..._oracle类似于update for

随便推点

为什么工厂招工越来越难-程序员宅基地

文章浏览阅读688次。什么原因导致工厂招工越来越难?辞职农民工说出里面的心酸说到工厂,里面打工的人,几乎都是农村的,每年一过完年出来打工,他们都是直奔工厂,因为条件有限,他们在大城市根本没有更好的选择,只有选择工厂上班,毕竟工厂对学历没有太大的要求,要知道,现在大学生找工作都难,何况这些从农村出来的,可是现在,工厂为什么越来越难招工?这是什么原因导致的,很多人辞职去外面做事,也..._招工难博客

Vue.js菜鸟教程自学(一)_vue.js 菜鸟教程-程序员宅基地

文章浏览阅读1.1w次,点赞2次,收藏19次。导入js:一、hello vue<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title><script src="https://cdn.staticfile.org/vue/2.2.2/vue...._vue.js 菜鸟教程

提高社群活跃度的10个方法_房产社群提升群活跃度-程序员宅基地

文章浏览阅读243次。要想做好社群运营,除了朋友圈搭建、线下活动组织、产品制度设计外,最重要的一点就是群内的维护。群内的维护也不仅仅是靠群规、群主的维系,还要配合一些活动来提升社群的活跃、用户参与和认同。今天为大家罗列一些,做社群运营常用的一些促活、催单的小互动、小游戏。因为不同社群适合的活动不一样的,因此大家根据自己的业务类型来做结合调整。1、群成员的介绍也可以叫群成员破冰,这种比较适合资源型的社群、或者有门槛的小群,给每个成员提供介绍的模板,入群的时候发到群里面。既能避免入群的尴尬冷场,又能方便大家今后资源上的互_房产社群提升群活跃度

处理JAVAsplit分割字符串遇到字段中包含转义了的分隔符_java转义了特殊字符但是需要分号分隔-程序员宅基地

文章浏览阅读229次。在Java中,使用"|“作为分隔符时,可以使用转义字符”|"来表示真正的分隔符。但是,如果字段中包含了"aaa|bb"这样的内容,Java会将其视为分隔符,导致分割结果不正确。为了解决这个问题,可以使用正则表达式的预先查找(lookahead)和后顾查找(lookbehind)来匹配分隔符,而不是直接使用分隔符本身。在上述代码中,使用了正则表达式"(?\)|“来匹配分隔符”|“。\)“表示前面不能有转义字符”",这样就可以排除掉被转义的分隔符。这样就能够正确地将字段中包含转义字符的内容保留在分割结果中。_java转义了特殊字符但是需要分号分隔

NGINX重定向保留域名等信息_ng 保持当前域名-程序员宅基地

文章浏览阅读2.4k次。nginx_ng 保持当前域名

喜欢和平精英、王者荣耀的小伙伴,快来看看这些游戏模型都是怎么制作出来的-程序员宅基地

文章浏览阅读2.9k次。作为资深的游戏爱好者,还不来看看你喜欢的英雄和游戏道具是怎么一步步做出来,最后呈现给大家的呢。制作3D游戏的角色或者场景的过程在行业内称为“计算机图形流水线”,将一个3D游戏角色从构思到角色成型,大致需要经历以下几个阶段。01第一个阶段,角色原画制作。要由概念设计师们大概给出一个角色概念,原画师根据角色概念制作出人物的三视图,将原画呈现出来,原画制作完成并通过之后,就可以交给3D制作员开始复杂的建模过程啦。不过因为原画师画出的东四只是一张概念图,而3D建模的过程十分复杂,所以原画中看不到的其他.

推荐文章

热门文章

相关标签