由于Android自带的Switch样式不能应用于所有UI风格的App,因此修改Switch样式是项目中经常要用到的技术,Switch的样式一般来说需要修改以下部分:按钮(thumb)、轨迹(track)以及大小。

首先我们经过尝试可以发现,如果我们直接在布局文件中修改Switch的属性layout_width和layout_height是无法修改Switch的真实大小的,相反只能改变这个Switch布局占的空间大小,Switch按钮的大小并没有发生改变。

在StackOverflow上搜索How to change the size of Switch Widget后,得到了答案(StackOverflow上的高票答案指出Switch大小是由track决定的,但是我自己尝试后发现Switch大小是由thumb决定的)。
实际上控件Switch的大小是由thumb也就是按钮大小决定的,track轨迹会适应thumb的大小,因此若是我们想改变Swicth的大小,我们需要改变Thumb的大小。
下面我们自己写一个thumb,取名为my_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="20dp" android:width="40dp" />    <gradient android:startColor="#1E90FF" android:endColor="#1E90FF"/>    <corners android:radius="180dip"/>shape>

这是一个类似操场形状的thumb,接着再写一个track的选择器switch_setting_selector.xml,实现switch点击后改变底色的功能,这里用的是我自己的图片

<?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/switch_small_bg_yes"/>    <item android:drawable="@drawable/switch_small_bg_no"/>selector>

最后在布局文件中放上Switch

"200dp"        android:layout_height="wrap_content"        android:thumb="@drawable/my_thumb"        android:track="@drawable/switch_setting_selector"        android:layout_marginTop="100dp"/>

最后效果如下

更多相关文章

  1. Android自定义漂亮的Dialog
  2. Android开发指南-用户界面-通用布局对象
  3. Android五种布局管理器之『LinearLayout』
  4. 【Android(安卓)UI设计与开发】第06期:底部菜单栏(一)使用TabActivi
  5. android 4.2的新特性layoutRtl,让布局自动从右往左显示
  6. 分享五种Android常用布局方式
  7. Android中LruCache的源码分析
  8. Android(安卓)沉浸式全屏的实现方法
  9. 第16章、布局Layouts之GridLayout网格布局(从零开始学Android)

随机推荐

  1. Android微信支付功能集成【全攻略】
  2. 如何使用Android命令
  3. Android(安卓)targetSDK升级到28,gradle升
  4. Android(安卓)绘制圆形图片
  5. Android(安卓)极光推送快速开发集成指南
  6. Android中GridView的使用——使用自带的S
  7. Android应用平均价格是iOS应用的2.5倍
  8. 安卓Android的系统架构详细解析
  9. Android操作JNI函数以及复杂对象传递
  10. 【转】制作不暴露源码的Android(安卓)Lib