Android 自定义SwitchPreference

server/2024/12/22 9:00:51/

1. 为SwitchPreference 添加背景:custom_preference_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item><shape android:shape="rectangle" ><gradient android:startColor="@color/white" android:endColor="@color/white" android:angle="90"/><corners android:radius="8dp"/></shape></item>
</selector>

2. 自定义 CustomSwitchPreference 继承自 witchPreference

public class CustomSwitchPreference extends SwitchPreference {public CustomSwitchPreference(Context context, AttributeSet attrs) {super(context, attrs);}public CustomSwitchPreference(Context context) {super(context);}//
....
//
}

3. 重载  onBindViewHolder, 实现自定义的效果, 如:设置背景、添加外边距、设置内边距、修改文字的颜色和字体等等:

    @Overridepublic void onBindViewHolder(PreferenceViewHolder holder) {super.onBindViewHolder(holder);//设置背景holder.itemView.setBackgroundResource(R.drawable.custom_preference_background);//设置内边距holder.itemView.setPadding(DensityUtils.dp2px(getContext(),20),DensityUtils.dp2px(getContext(),2),DensityUtils.dp2px(getContext(),20),DensityUtils.dp2px(getContext(),2));//设置外边距ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams)   holder.itemView.getLayoutParams();int textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 18, getContext().getResources().getDisplayMetrics());params.topMargin = DensityUtils.dp2px(getContext(),5);params.bottomMargin = DensityUtils.dp2px(getContext(),5);params.leftMargin = DensityUtils.dp2px(getContext(),20);params.rightMargin = DensityUtils.dp2px(getContext(),20);holder.itemView.setLayoutParams(params);TextView titleView = holder.itemView.findViewById(android.R.id.title);titleView.setTextColor(Color.BLACK); // 这里设置为红色,你可以根据需要设置其他颜色TextView summaryView = holder.itemView.findViewById(android.R.id.summary);summaryView.setTextColor(Color.BLACK); // 设置为黑色}

完整代码如下:

public class CustomSwitchPreference extends SwitchPreference {public CustomSwitchPreference(Context context, AttributeSet attrs) {super(context, attrs);}public CustomSwitchPreference(Context context) {super(context);}@Overridepublic void onBindViewHolder(PreferenceViewHolder holder) {super.onBindViewHolder(holder);holder.itemView.setBackgroundResource(R.drawable.custom_preference_background);holder.itemView.setPadding(DensityUtils.dp2px(getContext(),20),DensityUtils.dp2px(getContext(),2),DensityUtils.dp2px(getContext(),20),DensityUtils.dp2px(getContext(),2));ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams)   holder.itemView.getLayoutParams();int textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 18, getContext().getResources().getDisplayMetrics());params.topMargin = DensityUtils.dp2px(getContext(),5);params.bottomMargin = DensityUtils.dp2px(getContext(),5);params.leftMargin = DensityUtils.dp2px(getContext(),20);params.rightMargin = DensityUtils.dp2px(getContext(),20);holder.itemView.setLayoutParams(params);TextView titleView = holder.itemView.findViewById(android.R.id.title);titleView.setTextColor(Color.BLACK); // 这里设置为红色,你可以根据需要设置其他颜色TextView summaryView = holder.itemView.findViewById(android.R.id.summary);summaryView.setTextColor(Color.BLACK); // 设置为蓝色}
}

用法:

    <com.tetras.sensechat.wedgit.CustomSwitchPreferenceapp:defaultValue="true"app:iconSpaceReserved="false"app:key="key_continuous_switch"app:title="@string/text_continuous_switch" />

效果如图:


http://www.ppmy.cn/server/7260.html

相关文章

java读取Excel表格数据

java读取Excel表格数据 环境说明项目结构1.controller层2.service层实现层StudentModel.java类 使用的Maven依赖效果示例一效果示例二文档截图第一页第二页 postman请求说明其他说明 环境说明 jdk1.8&#xff0c;springboot2.5.3 项目结构 1.controller层 package com.exam…

广东省道路货物运输资格证照片回执可手机线上办理

广东省道路运输资格证是从事道路运输业务、危险品道路运输人员的必要证件&#xff0c;而在办理该证件的过程中&#xff0c;驾驶员照片回执是一项必不可少的材料。随着科技的发展和移动互联网的普及&#xff0c;现在办理驾驶员照片回执已经不再需要亲自前往照相馆&#xff0c;而…

2、关于数据库事务那些事

目录 1、什么是事务&#xff1f; 2、介绍下数据库事务&#xff1f; 3、并发事务会带来什么问题&#xff1f; 3.1、不可重复读和幻读有什么区别&#xff1f; 4、数据库隔离级别有哪几种&#xff1f; 5、MySQL默认使用隔离级别是啥&#xff1f; 6、如何控制并发事务&#…

VUE - pdfmake的中文字库支持

前端VUE导出pdf。 jspdf这个插件对中文支持不够友好&#xff0c;用html的canvas转图片后还是很模糊。最终选用了pdfmake插件。 使用 1.引入pdf npm install pdfmake --save 2.页面import import pdfMake from pdfmake/build/pdfmake; import pdfFonts from pdfmake/build…

【计算机网络】 第一章-- 初步认识计算机网络

目录 网络与互联网与因特网的区别因特网服务提供者&#xff08;Internet Service Provider,ISP &#xff09;因特网标准 --- RFC因特网的组成电路交换&#xff0c;分组交换和报文交换电路交换分组交换报文交换 计算机网络的分类计算机网络的性能指标计算机网络体系结构各层的作…

Python单例模式

一、先认识几个魔术方法&#xff0c;对理解实例创建有帮助 __init__、__new__、__call__ 一、__new__方法 1、__new__方法负责创建一个实例对象&#xff0c;在对象被创建的时候调用该方法它是一个类方法。 2、__new__方法在返回一个实例之后&#xff0c;会自动的调用__init__方…

B树和B+树试题解析

一、单项选择题 01&#xff0e;下图所示是一棵&#xff08;A ). A.4阶B树 B.3阶B树 C.4阶B树 D.无法确定 02.下列关于m阶B树的说法中&#xff0c;错误的是( C ). A.根结点至多有m棵子树 B.所有叶结点都在同一层次上 C.非叶结点至…

LeetCode 热题 100 题解:普通数组部分

文章目录 题目一&#xff1a;最大子数组和&#xff08;No. 53&#xff09;题解 题目二&#xff1a;合并区间&#xff08;No. 56&#xff09;题解 题目三&#xff1a;轮转数组&#xff08;No. 189&#xff09;题解 题目四&#xff1a;除自身以外数组的乘积&#xff08;No. 238&a…