Android自定义View——滑动按钮 (三)
实现在xml中对自定义View进行属性赋值
1)新建存放属性值xml文件,attrs.xml
文件中添加属性名称和类型
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="ToggleView"> <attr name="switchBackground" format="reference" /> <attr name="slideBackground" format="reference" /> <attr name="toggle_state" format="boolean" /> </declare-styleable> </resources>
2)在MainActivity的布局文件中对自定义的控件添加属性
需注意在文件开头,添加命名空间,com.f.customeview为我的项目package名
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:customView="http://schemas.android.com/apk/res/com.f.customeview" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent">
<com.f.customeview.Custome.ToggleView android:id="@+id/toggleBtn" android:layout_width="0dp" android:layout_height="9dp" android:layout_marginTop="30dp" app:layout_constraintTop_toBottomOf="@+id/textView1" customView:slideBackground="@mipmap/ic_launcher" customView:switchBackground="@drawable/switch_bg" customView:toggle_state="false" tools:ignore="MissingConstraints" tools:layout_editor_absoluteX="205dp" />
3)在ToggleView类中第二个构造方法,获取xml中的属性,调用方法
/** * 用于xml创建,可指定自定义属性 */ public ToggleView(Context context, AttributeSet attrs) { super(context, attrs); //获取xml中自定义的属性 String namespace = "http://schemas.android.com/apk/res/com.f.customeview"; int defaultValue =-1; int switchBackgroundResource = attrs.getAttributeResourceValue(namespace,"switchBackground",defaultValue); int slideButtonResource = attrs.getAttributeResourceValue(namespace,"slideBackground",defaultValue); boolean toggleState = attrs.getAttributeBooleanValue(namespace,"toggle_state",false); setSwitchBackgroundResource(switchBackgroundResource); setSlideButtonResource(slideButtonResource); setSwitchState(toggleState); }
就搞定啦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!