Android 自定义Switch样式

  • 效果展示
  • 踩坑
    • 1. 无效的宽高?
  • 实现代码
    • 1. 轨道track
    • 2. 拇指thumb
    • 3. 使用switch

效果展示

踩坑

1. 无效的宽高?

通常情况下switch的轨道 (track) 的宽度固定为拇指 (thumb) 宽度的2倍,高度相同,因此想要做成如下的效果,只能在Drawable上动手脚。

解决方案:给轨道 (track) 或拇指 (thumb) 的背景 设置透明的带高度的 strock ,想要拇指更小些就给拇指设,反之亦然。

实现代码

1. 轨道track

<!-- track_on.xml -->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#FF00B2FF" /><!-- 此处透明stroke压缩轨道高度 --><strokeandroid:width="3dp"android:color="#00000000" /><corners android:radius="15dp" />
</shape><!-- track_off.xml -->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><solid android:color="#FFCFDBEF" /><!-- 此处透明stroke压缩轨道高度 --><strokeandroid:width="3dp"android:color="#00000000" /><corners android:radius="15dp" />
</shape><!-- selector_track.xml -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- 调用两个xml文件分别作为开关状态下的样式 --><item android:drawable="@drawable/track_on" android:state_checked="true" /><item android:drawable="@drawable/track_off" android:state_checked="false" />
</selector>

2. 拇指thumb

<!-- shape_thumb.xml -->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="oval"><solid android:color="#FFCFDBEF" /><stroke android:width="0.5dp"android:color="#FF898E9D" /><sizeandroid:width="32dp"android:height="32dp" />
</shape><!-- selector_thumb.xml -->
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/shape_thumb" android:state_checked="true" /><item android:drawable="@drawable/shape_thumb" android:state_checked="false" />
</selector>

3. 使用switch

<?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:background="#242D46"><Switchandroid:id="@+id/switch1"android:layout_width="wrap_content"android:layout_height="32dp"android:layout_marginLeft="50dp"android:layout_marginTop="50dp"android:checked="false"android:textOff=""android:textOn=""android:thumb="@drawable/selector_switch_thumb"android:track="@drawable/selector_switch_track" /><Switchandroid:id="@+id/switch2"android:layout_width="wrap_content"android:layout_height="32dp"android:layout_marginLeft="50dp"android:layout_marginTop="10dp"android:checked="true"android:textOff=""android:textOn=""android:thumb="@drawable/selector_switch_thumb"android:track="@drawable/selector_switch_track" />
</LinearLayout>

Android 自定义Switch样式相关推荐

  1. android switch自定义样式,Android自定义Switch样式

    如图自定义的Switch样式: 5421606984766_.pic.jpg 需要注意的是:switch的大小是跟thumb的大小有关 下面以样式二为例: switch_track_selector_ ...

  2. android 自定义 黑点,Android自定义密码样式 黑点转换成特殊字符

    本文为大家分享了Android自定义密码样式的制作代码,黑点换成¥.%等特殊字符,供大家参考,具体内容如下 复制下面代码即可: 布局: xmlns:android="http://schem ...

  3. android密码是小黑点,Android自定义密码样式 黑点转换成特殊字符

    本文为大家分享了Android自定义密码样式的制作代码,黑点换成¥.%等特殊字符,供大家参考,具体内容如下 复制下面代码即可: 布局: xmlns:android="http://schem ...

  4. android 自定义switch控件,Android中switch自定义样式

    android 原生开关按钮控件 Switch 提供样式自定义方式,可供我们修改为适合我们开发使用的样式控件,自定义样式过程如下: 自定义switch切换drawable 新建swith_thumb. ...

  5. Android 自定义Switch,仿微信开关键Switch

    switch (changeFragmentEvent.getViewId()) {//启动设备(安卓接收)case 1:textView.setText("vvvvv555"+c ...

  6. Android自定义Button样式(自定义样式不生效怎么办)

    在drawable目录下新建button_shape.xml自定义按钮样式文件 button_shap.xml <?xml version="1.0" encoding=&q ...

  7. android自定义checkbox样式,自定义CheckBox样式

    阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 自定义样式 自定义选择器效果 自定义素材 ...

  8. android 自定义主题样式

    From: http://blog.csdn.net/dawanganban/article/details/17732701 http://www.cnblogs.com/bluestorm/arc ...

  9. android 自定义dialog样式,Android 自定义dialog类

    首先定制style样式 styles.xml 加入自定义样式 @null true true true @color/transparent @color/transparent true 0.6 在 ...

最新文章

  1. CSR8670的A2DP与AVRCP的应用笔记
  2. 《Kinect应用开发实战:用最自然的方式与机器对话》一3.2 基于“管道”的系统架构...
  3. AA065VD数据线连接错位的现象及分析总结
  4. 搭建Sql Server AlwaysOn 视频教程
  5. 字段缺失_数据科学| 手把手教你用 pandas 索引、汇总、处理缺失数据
  6. C语言i++和++i的区别和用法
  7. .rpt文件内容读取java_python读取PDF指定表格内容批量文件重命名
  8. 乱码翻译器在线翻译_GAL党的福音——开源生肉翻译器MisakaTranslator正式版发布...
  9. 删除安装的python
  10. 如何查看电脑连过的WIFI以及WiFi密码
  11. 魔兽世界 - 宏命令
  12. 走到哪里都有我们的精彩
  13. android 远程视频监控程序源码,详解基于Android已开放源代码的远程视频监控系统教程...
  14. Codeforces Global Round 11 ABCD题解
  15. 计算机软件工程专业心得,非计算机专业学软件工程的一点心得体会
  16. 怎么知道创元网配资平台靠不靠谱?
  17. Adobe Audition CS6如何录电脑放出的声音!
  18. 手机中怎么快速去视频水印
  19. MATLAB:矩阵(基础知识)
  20. SAP_FICO_BP业务伙伴配置概要

热门文章

  1. 【CS224n】(lecture7)机器翻译NMT,seq2seq和attention
  2. NVIDIA Jetson TX2 简单介绍
  3. 带你10分钟学会 Git Extensions
  4. mysql好友关系数据表设计_社交系统中用户好友关系数据库设计
  5. 华为怎么分屏操作技巧_第五人格魔术师怎么操作 求生者魔术师操作技巧
  6. 文书档案整理过程图文讲解
  7. 控制学习笔记(1)——反步控制法
  8. matlab的train函数用法,SVMtrain函数用法
  9. 上拉电阻和下拉电阻,推挽和开漏输出
  10. scoi2007降雨量