效果图



两个单词

1.thumb:指的是可以滚动的圆球
2.track:指的是圆球下面的轨道
如果看不懂,那再看两张图


不难看出我们需要定义4个xml文件,分别是

closed_track.xml:用于按钮关闭时,track的样式
open_track.xml:用于按钮打开时,track的样式
closed_thumb.xml:用于按钮关闭时,thumb的样式
open_thumb.xml:用于按钮打开时,thumb的样式

另外我们还需要一个track选择器thumb选择器,用于告诉按钮
此时应该去调用哪一个xml(上面定义了4个)

最终最终我们需要定义6个xml(4个样式+2个选择器)


xml都放在drawable文件下

第1个closed_track.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><!--设置高度,这里设置宽度没有用--><size android:height="40dp" /><!--设置弧度--><corners android:radius="20dp" /><!--设置渐变,两个颜色一样则没有渐变效果--><gradient
        android:endColor="#888888"android:startColor="#888888" />
</shape>

第2个open_track.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><!--设置高度--><size android:height="40dp"/><!--设置弧度--><corners android:radius="20dp"/><!--设置渐变,两个颜色一样则没有渐变效果--><gradient
        android:endColor="#33da33"android:startColor="#33da33"/>
</shape>

第3个closed_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><!--设置高度,注意要设置宽度--><size
        android:width="40dp"android:height="40dp" /><!--设置弧度--><corners android:radius="20dp" /><!--设置渐变,两个颜色一样则没有渐变效果--><gradient
        android:endColor="#fff"android:startColor="#fff" /><!--边缘一层灰色--><stroke
        android:width="2dp"android:color="#888888" />
</shape>

第4个closed_thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><!--设置高度--><size android:height="40dp" /><!--设置弧度--><corners android:radius="20dp"/><!--设置渐变,两个颜色一样则没有渐变效果--><gradient
        android:endColor="#eeeeee"android:startColor="#eeeeee"/><!--边缘一层绿色--><stroke
        android:width="2dp"android:color="#33da33" />
</shape>

第5个track.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/open_track" android:state_checked="true" /><item android:drawable="@drawable/closed_track" android:state_checked="false" />
</selector>

第6个thumb.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/open_thumb" android:state_checked="true" /><item android:drawable="@drawable/closed_thumb" android:state_checked="false" />
</selector>

最后在布局文件引用下选择器就可以了

<?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:gravity="center"android:orientation="vertical"><Switch
        android:layout_width="wrap_content"android:layout_height="wrap_content"android:thumb="@drawable/thumb"android:track="@drawable/track" />
</LinearLayout>

https://blog.csdn.net/qq_34763699/article/details/54954394

自定义Switch(秒懂)相关推荐

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

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

  2. autojs自定义Switch

    牙叔教程 简单易懂 使用场景 自定义控件 效果展示 autojs版本 8.8.20-0 为什么自定义控件 为了UI界面漂亮 怎样自定义控件 autojs软件自带的示例 / 界面控件 / 自定义控件 , ...

  3. 微信小程序,自定义switch组件

    在我看来这个主要是样式,相当于自己重新写一个switch样式,下面直接看源码 目录结构 switch.wxml <view class="switch"><vie ...

  4. Android 自定义Switch样式

    Android 自定义Switch样式 效果展示 踩坑 1. 无效的宽高? 实现代码 1. 轨道track 2. 拇指thumb 3. 使用switch 效果展示 踩坑 1. 无效的宽高? 通常情况下 ...

  5. java switch小程序,小程序自定义switch组件

    如上图,小程序api中的switch组件只能自定义颜色,不能自定义宽高,所以就开始了自己写switch组件. 自定义组件样式 switch组件样式大致如图,样式思路:未选中时为一个长方形有圆角按钮,和 ...

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

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

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

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

  8. 自定义Switch背景带文字

    搞一个switch控件看了网上的很多都是用的selector去定义thumb 跟 track,这样可以改变它的背景跟小圆点.但没有办法设置文字,源码给了设置文字的方法,也只能设置再小圆点上.所以索性自 ...

  9. QtQuick PC端开发实战系列(18)_自定义Switch

    总目录传送门 本博文技术等级: ★★☆☆☆☆☆☆☆☆ 我们先看看原始的switch什么效果 https://doc.qt.io/qt-5/qml-qtquick-controls2-switch.ht ...

最新文章

  1. 09 Storage Structure and Relationships
  2. 树莓派linux编译不了动态库,linux系统下的树莓派与Qt 5.12.3源码的交叉编译
  3. java实现WGS84转其他地图坐标
  4. 如果出现这些,你就必须跳槽了
  5. python之常用的数据类型
  6. JavaScript函数,思维导图
  7. 把iPad上的视频推送到大麦盒子去
  8. 计算机声音管理器不见了,Realtek高清晰音频管理器怎么找不到打开教程
  9. 想晋升Android架构师——学习这些核心技术够用吗?
  10. c语言最大乘积问题,利用C语言来求最大连续子序列乘积的方法
  11. 【历史上的今天】5 月 26 日:美国首个计算机软件程序专利;苹果市值首次超越微软;Wiki 的发明者出生
  12. 案例 7-1.3 寻找大富翁(25 分)
  13. 误删暂存代码的恢复方法
  14. Leetcode3:最长不重复子串
  15. CentOS 8 安装+SSH+Cmatrix过程
  16. vscode保存代码,浏览器自动刷新页面
  17. 经济学通识 (第二版) 薛兆丰
  18. 重要通知|Strata Data Conference北京站最优惠票价今天截止。
  19. 泉州师范学院计算机课程表,泉州师范学院软件学院 2010 级第 四 学期课程表
  20. UnityShader_倒影,水波倒影(1)

热门文章

  1. 点仙人掌(cactus)
  2. xmind 文件 打开后会在当前目录生成 configuration,p2和workspace目录,artifacts.xml文件 解决
  3. jquerymobile-16 select menu
  4. Files and Directories
  5. CAD图纸的转换和批量打印
  6. 手机动态:摩托罗拉edge s pro搭载骁龙870处理器
  7. 算法的浅论:算法前序
  8. 欲登千层楼,又何惧寒风
  9. 游戏评测HTML5网站模板是一款适合游戏视频 游戏评测 游戏介绍网站模板。
  10. 数据分析师三个等级_数据分析课|这三个等级的数据分析师报考条件,一定是你需要的...