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

首先,在布局中添加上Switch控件:
<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:
<?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:
<?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:
<?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:
<?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:
<?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:
<?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:
<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:
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);
}
}
});
}
}
最终效果如下图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# UI
# Switch
# Android CheckBox中设置padding无效解决办法
# Android开发之CheckBox的简单使用与监听功能示例
# Android 中CheckBox多项选择当前的position信息提交的示例代码
# Android 中CheckBox的isChecked的使用实例详解
# Android开发手册自定义Switch开关按钮控件
# Android开关控件Switch的使用案例
# Android 自定义Switch开关按钮的样式实例详解
# Android单选按钮RadioButton的使用方法
# Android复选框CheckBox与开关按钮Switch及单选按钮RadioButton使用示例详
# 圆角
# 状态下
# 只需
# 要将
# 会用
# 大家多多
# 如下图
# 就可以
# 滑块
# xml
# gray_thumb
# version
# radius
# endColor
# http
# gradient
# 一般不
# showText
# encoding
# rectangle
相关文章:
C#怎么创建控制台应用 C# Console App项目创建方法
营销式网站制作方案,销售哪个网站招聘效果最好?
Python路径拼接规范_跨平台处理说明【指导】
如何配置WinSCP新建站点的密钥验证步骤?
如何通过免费商城建站系统源码自定义网站主题与功能?
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
seo网站制作优化,网站SEO优化步骤有哪些?
如何快速搭建虚拟主机网站?新手必看指南
建站之星如何实现网站加密操作?
建站主机空间推荐 高性价比配置与快速部署方案解析
制作网站的基本流程,设计网站的软件是什么?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何在服务器上配置二级域名建站?
高端云建站费用究竟需要多少预算?
MySQL查询结果复制到新表的方法(更新、插入)
建站为何优先选择香港服务器?
如何在阿里云域名上完成建站全流程?
香港服务器租用费用高吗?如何避免常见误区?
建站主机服务器选购指南:轻量应用与VPS配置解析
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
如何在云虚拟主机上快速搭建个人网站?
建站之星Pro快速搭建教程:模板选择与功能配置指南
家具网站制作软件,家具厂怎么跑业务?
临沂网站制作公司有哪些,临沂第四中学官网?
创业网站制作流程,创业网站可靠吗?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何在搬瓦工VPS快速搭建网站?
移民网站制作流程,怎么看加拿大移民官网?
临沂网站制作企业,临沂第三中学官方网站?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
制作门户网站的参考文献在哪,小说网站怎么建立?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何高效完成独享虚拟主机建站?
如何在新浪SAE免费搭建个人博客?
c# await 一个已经完成的Task会发生什么
建站与域名管理如何高效结合?
详解jQuery停止动画——stop()方法的使用
如何选择美橙互联多站合一建站方案?
山东网站制作公司有哪些,山东大源集团官网?
如何高效生成建站之星成品网站源码?
,sp开头的版面叫什么?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何获取PHP WAP自助建站系统源码?
制作网站的软件免费下载,免费制作app哪个平台好?
如何在IIS中新建站点并配置端口与IP地址?
如何在阿里云虚拟服务器快速搭建网站?
香港网站服务器数量如何影响SEO优化效果?
如何在Tomcat中配置并部署网站项目?
*请认真填写需求信息,我们会在24小时内与您取得联系。