Android 自定义Switch样式

Android 之开关按钮 ToggleButton 和开关 Switch 本节给大家介绍的Android基本UI控件是:开关按钮ToggleButton和开关Switch,可能大家对着两个组件 并不熟悉,突然想起笔者的第一间外包公司,是否在wifi下联网的开关,竟然用的TextView,然后叫美工 且两个切换前后的图,然后代码中进行设置,当然点击TextView的时候判断状态,然后设置对应的背景...if(compoundButton.isChecked()) Toast.makeText(this,"开关:ON",Toast.LENGTH_SHORT).show(); 阅读详情

效果展示

在这里插入图片描述

踩坑

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压缩轨道高度 -->
    <stroke
        android: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压缩轨道高度 -->
    <stroke
        android: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" />
    <size
        android: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">

    <Switch
        android: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" />

    <Switch
        android: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自定义样式全解析:从基础到高级实战 在Android应用开发中,UI组件定制化是提升应用专业度和用户体验的关键环节。开关按钮(Switch)作为高频交互控件,其默认样式往往难以满足个性化设计需求。通过深入理解其内部构成(轨道、滑块、状态)与绘制原理,开发者可以借助XML选择器(Selector)、形状可绘制(Shape Drawable)和样式(Style)系统,实现对视觉细节的完全掌控。这不仅涉及颜色、形状的自定义,更需考虑状态管理、性能优化及多版本兼容性。掌握Switch自定义技术,能有效解决**UI风格统一**和**视觉体验提升**等核 阅读详情

相关推荐

Android 开发中的新控件:Switch 方法解析

在 onCheckedChanged 方法中,我们可以根据 isChecked 参数的值来判断 Switch 控件的状态,从而执行相应的操作。在上述代码中,我们创建了一个 Switch 控件,并为其指定了一个唯一的 ID(@+id/switchButton)。在上述代码中,我们使用 findViewById 方法通过控件的 ID(R.id.switchButton)获取了 Switch 控件的引用,并将其赋值给一个名为 switchButton 的变量。

PixelDyno的博客 1586

android自定义Switch样式

效果如图 自定义组件CheckSwitchButton.Java 放在View文件下 package com.haiyisoft.teamassistant.view; import com.haiyisoft.teamassistant.R; import com.haiyisoft.teamassistant.anim.FrameAnimationController;

sinat_28761919的博客 3281

Android组件之Switch

Switch 是 Android 提供的一个开关切换组件,允许用户在两种状态(开/关)之间切换。< Switch android: id = " @+id/my_switch " android: layout_width = " wrap_content " android: layout_height = " wrap_content " android: text = " 是否启用 " />

二木成林 386

Android中的Switch控件

?xmlnshttps。

qq_51108920的博客 1万+

创建自定义Android 4.0 Switch控件样式实战示例

在Android开发中,自定义控件样式是提升用户体验的重要方式之一。本章我们将探索如何自定义Switch控件的样式,从而使其与我们的应用主题更加协调,更好地满足用户个性化的需求。自定义Switch控件样式常见的需求包括改变控件的颜色、尺寸,以及在状态变化时添加动画效果,甚至可以为Switch控件添加文字描述,来提高其易读性。我们将在后续章节中逐一探讨这些需求的实现方法。让我们从自定义Switch的颜色和尺寸开始,进一步提升控件的视觉效果和用户交互体验。

weixin_32324637的博客 949

2026 AI编程环境安装指南:从下载、部署到流式验证

AI编程环境已不再是传统软件安装,而是融合硬件兼容性、模型运行时与IDE插件协同的系统工程。其核心原理在于:本地GPU驱动需匹配量化运行时(如Ollama v0.3+对CUDA 12.1+的强制要求),协议层依赖gRPC流式响应,生态层则要求插件签名与模型源可信校验。这一技术组合显著提升AI代码生成的实时性与生产就绪度,支撑微服务开发、CI/CD智能补全、本地LLM推理等关键场景。本文聚焦AI编程软件下载与安装过程中的可复现部署实践,覆盖macOS/WSL2双平台、NVMe模型加速、离线校验及原子化功能验证

weixin_30480075的博客 583

Android自定义Switch样式

系统自定义Switch样式经常无法满足需求,通过图片的方式没有滑动的动效,所以需要根据Switch自带的属性自定义样式,下面通过例子说明如何自定义。

wolf0706的专栏 1742

跨境TRS投资操作指南与系统解决方案

3 点击【申请 TRS 账户】,查看风险披露,录入账户参数、确定录入的参数信息,进行身份验证,输入验证码,TRS 账户开户申请已提交,后台对已提交的 TRS 开户申请进行审核,审核成功后,短信邮箱提醒,进行登录;2.点击【申请TRS账户】,查看风险披露,录入账户参数、确定录入的参数信息,进行身份验证,输入验证码,TRS账户开户申请已提交,后台对已提交的TRS开户申请进行审核,审核成功后,短信邮箱提醒,进行登录;4)更广泛的投资选择:相比A股通,TRS可以交易更多的A股标的,提供了更广泛的投资选择。

2401_85487119的博客 2849

自定义安卓SWITCH样式

一,在AndroidStudio新建一个工程 二,在RES \可绘制文件夹新建4个XML文件 switch_thumb.xml是滑块样式 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;shape xmlns:android="http://schemas.android.com/apk/res/android" android...

qq_22079023的博客 2801

论文分享 - OctoMap八叉树建图原理

论文:OctoMap:An Efficient Probabilistic 3D Mapping Framework Based on Octrees。

一只废佐_的博客 2539

从Gotham到Foundry:一文读懂Palantir三大产品线(Gotham/Foundry/Apollo)的核心差异与适用场景

本文深度解析Palantir三大产品线Gotham、Foundry和Apollo的核心差异与适用场景。Gotham专为国防与情报设计,提供军事级安全分析;Foundry是企业数字化转型的通用平台,支持低代码开发;Apollo则是云原生基石,确保系统可靠运行。通过对比产品架构与典型应用,帮助技术决策者根据需求做出明智选择。

weixin_42524499的博客 840

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

android 原生开关按钮控件Switch提供样式自定义方式,可供我们修改为适合我们开发使用的样式控件,自定义样式过程如下:自定义switch切换drawable新建swith_thumb.xml文件自定义switch轨道drawable新建switch_track.xmln文件,轨迹如果在选中与否过程并没有发生变化时可以不需要添加 android:state_checked=”true”状...

weixin_34324082的博客 743

电磁场仿真软件:COMSOL Multiphysics_(17).时域与频域分析

时域和频域分析是电磁场仿真中非常重要的两种方法,每种方法都有其独特的应用场景和优势。时域分析适用于瞬态响应和宽带信号的分析,而频域分析则适用于稳态响应和窄带信号的分析。在COMSOL Multiphysics中,通过合理设置物理场接口、材料属性、边界条件、网格划分和求解器,可以高效地进行这两种分析,并通过傅里叶变换将时域结果转换为频域结果,进一步拓展仿真应用的范围。合理的性能优化措施,如网格划分优化和并行计算,可以显著提高仿真的效率和准确性。

kkchenjj的博客 1975

Android Switch开关按钮使用和自定义样式(系列教程五)

Android Switch开关按钮使用和自定义样式。Switch开关按钮是Android中的基本控件之一,其本质上也是一个按钮,具有开和关两种展示状态。textOn:开关按钮打开时显示的文字。textOff:开关按钮关闭时显示的文字。thumb:开关按钮上原型滑块的样式,自定义样式时需要设置此样式。track:开关按钮下面导轨的样式,自定义样式时需要设置此样式。switchTextAppearance:设置文本的风格,可以用来设置开关两种状态下的文本样式。checked:设置初始选中状态。

qq_34215018的博客 1万+

通信原理 | 随机数仿真 | 均匀、正态、双高斯、瑞利、莱斯、对数正态、nakagami、Suzuki分布的随机数仿真(matlab)

信道建模在通信系统设计和分析中扮演着至关重要的角色。它指的是使用数学和物理模型来描述和模拟无线或有线通信路径中的信号传播特性。

若北辰 1985

【A2DP】规范精讲[1]: 深入解析A2DP协议的核心架构

在蓝牙技术发展的早期阶段,音频传输主要通过SCO(同步面向连接)链路实现,这种设计主要针对语音通信,音质有限且功能单一。随着人们对无线高质量音频需求的增长,​​Advanced Audio Distribution Profile (A2DP)​​ 应运而生,成为蓝牙音频传输的技术基石。

byte轻骑兵的技术小窝 1万+

Android 自定义Switch开关按钮的样式

GitHub传送门1.写在前面本文主要讲的是在Android原生Switch控件的基础上进行样式自定义,内容很简单,但是在实现的过程中还是遇到了一些问题,在此记录下来,希望对大家能够有所帮助,看下效果图:2.自定义样式2.1 原生样式首先看下原生的效果(Android 7.1):布局文件如下:<Switch android:layout_width="wrap_content" an

YangLe 6774

YOLOv13保姆级教程+AKConv模块:可变形卷积+自适应核优化,mAP提升3.23%,召回率&mAP50~95显著提升(论文涨点模块已验证)

本文介绍了一种改进的YOLOv13-AKConv模型,通过引入AKConv模块显著提升了目标检测性能。实验结果表明,优化后的模型(绿色曲线)相比原模型(蓝色曲线)在mAP指标上提升了3.23个点,同时召回率、mAP50-95等指标均有明显提升。作者详细阐述了模型移植过程,包括创建yolov13-AKConv.yaml配置文件,修改tasks.py和modules/init.py文件,以及实现AKConv模块的核心代码。该模块采用可变形卷积思想,通过动态生成采样点位置来增强特征提取能力,并集成了BN和SiLU

FJN110的博客 2611

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

如图自定义的Switch样式:5421606984766_.pic.jpg需要注意的是:switch的大小是跟thumb的大小有关下面以样式二为例:switch_track_selector_new.xmlswitch_track_bg_selected.xmlandroid:height="@dimen/switch_track_height"/>switch_track_bg_norma...

weixin_42168555的博客 701

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android switch 控件自定义样式不显示??

xml中使用 <Switch android:layout_width="wrap_content" android:layout_height="wrap_content" android:switchMinWidth="@dimen/dp_50" android:textOff=" " ...

病毒才俊 1637

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android 自定义开关键设置大小,Android 自定义Switch开关按钮的样式实例详解

封面GitHub传送门1.写在前面本文主要讲的是在Android原生Switch控件的基础上进行样式自定义,内容很简单,但是在实现的过程中还是遇到了一些问题,在此记录下来,希望对大家能够有所帮助,看下效果图:自定义样式2.自定义样式2.1 原生样式首先看下原生的效果(Android 7.1):原生效果布局文件如下:android:layout_width="wrap_content"android...

weixin_39747721的博客 1770

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Android中自定义switch控件样式

switch控件是有自带的开关样式的,需要使用自定义的话需要在xml文件中设置以下属性: android:thumb="@null" android:track="@null" 然后设置background属性为自己定义的selector,如下: android:background="@drawable/switch_plan_notice_selector" selector资源文件如下

活在当下!输出快乐! 5153

安卓自定义Switch样式,简单易懂。

因原生的switch控件样式不符合UI要求,因此决定自定义Switch样式。通过修改switch的track和thumb属性实现,以最小的修改实现自定义switch样式。 1、布局中使用 <!-- switchMinWidth的值和my_switch_track_off.xml及my_switch_track_off.xml中宽度一致 --> <Switch and...

May-gemini的博客 1614

Android自定义Switch开关样式:从设计到实现完整流程

想要为你的Android应用打造独特的用户体验吗?厌倦了系统默认的Switch开关样式?本文将为你详细介绍Android自定义Switch开关样式的完整流程,从设计理念到具体实现,帮助你快速掌握Android Switch样式自定义技巧,让你的应用界面更加美观和专业。😊 ## 🔥 为什么需要自定义Switch开关样式? 在Android开发中,Switch控件是常用的用户交互组件,但系统默

gitblog_00771的博客 376

switch+ios风格android,安卓仿IOS Switch开关按钮

老规矩,先放上一张图,对比一下安卓原生实现的Switch按钮和仿IOS实现的区别:Switch效果对比下面主要讲讲仿IOS Switch控件的实现,其实安卓Switch控件中提供了两个属性让我们去自定义控件的样式,分别是android:thumb=""和android:track="",要像实现IOS那样的效果,定义这两个属性即可,下面贴出代码:android:id="@+id/all_day_s...

weixin_30193461的博客 811
上一篇: Java后端开发温习笔记--1.1
下一篇: Android 诡异 Bug 排查实录:没写过一行 WebView,语言却被它悄悄重置了
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值