自定义类似微信效果Preference

1. 为自定义Preference 添加背景: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. 自定义layout: layout_custom_click_preference.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="wrap_content"android:paddingVertical="20dp"android:layout_marginHorizontal="20dp"android:layout_marginVertical="8dp"android:background="@drawable/custom_preference_background"><androidx.appcompat.widget.AppCompatTextViewandroid:id="@+id/custom_preference_text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="16sp"android:textColor="#111111"android:text="@string/text_help_page"android:layout_marginStart="20dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintBottom_toBottomOf="parent"/><androidx.appcompat.widget.AppCompatImageViewandroid:id="@+id/custom_preference_icon"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/ic_preference_back"android:layout_marginEnd="20dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

3. 自定义style:

    <declare-styleable name="customClickPreferenceView"><attr name="iconDrawable" format="reference|color" /></declare-styleable>

4.自定义图标

<vector xmlns:android="http://schemas.android.com/apk/res/android"android:width="16dp"android:height="16dp"android:viewportWidth="16"android:viewportHeight="16"><pathandroid:pathData="M5.869,12.862L5.869,12.862A0.667,0.667 45.145,0 1,5.869 11.919L10.319,7.47A0.667,0.667 45.145,0 1,11.262 7.47L11.262,7.47A0.667,0.667 45.145,0 1,11.262 8.413L6.812,12.862A0.667,0.667 45.145,0 1,5.869 12.862z"android:fillColor="#000"/><pathandroid:pathData="M5.682,2.729L5.682,2.729A0.667,0.667 45.145,0 1,6.625 2.729L11.075,7.178A0.667,0.667 45.145,0 1,11.075 8.121L11.075,8.121A0.667,0.667 45.145,0 1,10.132 8.121L5.682,3.672A0.667,0.667 45.145,0 1,5.682 2.729z"android:fillColor="#000000"/>
</vector>

5. 完整代码

public class CustomClickPreference extends Preference {private AppCompatTextView textView;private AppCompatImageView imageView;private int iconDrawable;public CustomClickPreference(Context context, AttributeSet attrs) {super(context, attrs);setLayoutResource(R.layout.layout_custom_click_preference);TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.customClickPreferenceView);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {iconDrawable = typedArray.getResourceId(R.styleable.customClickPreferenceView_iconDrawable, R.drawable.ic_preference_back);}typedArray.recycle();}@Overridepublic void onBindViewHolder(PreferenceViewHolder holder) {super.onBindViewHolder(holder);// 自定义布局textView = (AppCompatTextView) holder.findViewById(R.id.custom_preference_text);imageView = (AppCompatImageView) holder.findViewById(R.id.custom_preference_icon);textView.setText(getTitle());imageView.setImageResource(iconDrawable);}public void setIconDrawable(int resourceId) {imageView.setImageResource(resourceId);}
}

6. 用法

    <com.tetras.sensechat.wedgit.CustomClickPreferenceapp:iconDrawable="@drawable/ic_preference_back"app:isPreferenceVisible="false"app:key="key_document_help"app:title="帮助文档" />

7. 效果如图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625310.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Web】陇原战“疫“2021网络安全大赛 题解

目录 CheckIN eaaasyphp EasyJaba CheckIN 拿到附件&#xff0c;贴出关键代码 func getController(c *gin.Context) {cmd : exec.Command("/bin/wget", c.QueryArray("argv")[1:]...)err : cmd.Run()if err ! nil {fmt.Println("error: ", …

SpringBoot相关知识点总结

1 SpringBoot的目的 简化开发&#xff0c;开箱即用。 2 Spring Boot Starter Spring Boot Starter 是 Spring Boot 中的一个重要概念&#xff0c;它是一种提供依赖项的方式&#xff0c;可以帮助开发人员快速集成各种第三方库和框架。Spring Boot Starter 的目的是简化 Sprin…

音频---数字mic

一、常见的数字mic pdm麦通过codec芯片将数字麦转换为i2s信号输入到SOC 纯pdm麦就是直接进入SOC的pdm接口&#xff0c;走的是PDM信号&#xff0c;PDM信号就是两个线&#xff0c;一根数据线一根时钟线&#xff08;如顺芯ES7201/7202把MIC信号转换成PDM&#xff09;。 二、DMIC…

设计模式——备忘录模式18

备忘录模式将创建状态快照 /备份的工作委派给实际状态的拥有者 &#xff08;Originator&#xff09; 对象。 这样其他对象就不再需要从 “外部” 复制文件状态了&#xff0c; 拥有者拥有其文件状态的完全访问权&#xff0c; 因此可以自行生成快照。 设计模式&#xff0c;一定要…

解决nginx日志过大问题

1. 问题点 nginx默认的日志在logs/access.log&#xff0c;并且是一直累加写入&#xff0c;时间长了就会非常大&#xff0c;占用过多的硬盘&#xff0c;如果强行删除是很不友好的&#xff0c;需要重启服务&#xff1b; 2. 文件分割 上图文件已经达到了十个G左右 处理的思路肯定…

PyTorch深度学习入门-2

PyTorch深度学习快速入门教程&#xff08;绝对通俗易懂&#xff01;&#xff09;【小土堆】_哔哩哔哩_bilibili 一、神经网络的基本骨架 --nn.Module Neutral network torch.nn — PyTorch 2.2 documentation * import torch from torch import nnclass xiaofan(nn.Module):…

【LeetCode: 785. 判断二分图 + bfs】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

BLE架构图

PHY层(Physical layer 物理层) PHY层用来指定BLE所用的无线频段(2.4G)&#xff0c;调制解调方式和方法、跳频等。PHY层的性能直接决定整个BLE芯片的功耗、灵敏度以及selectivity等射频指标。 LL层(Link Layer 链路层) 链路层主要是对RF射频控制。链路层定义了协议栈中最为基础的…

动态规划Dynamic programming详解-背包问题【python】

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a;LeetCode解锁1000题: 打怪升级之旅python数据分析可…

为什么科拓停车选择OceanBase来构建智慧停车SaaS应用

本文来自OceanBase的客户——拓客停车的实践分享 科拓停车简介与业务背景 作为智慧停车行业的佼佼者&#xff0c;科拓停车致力于提供全方位的智慧停车解决方案。服务涵盖车场运营管理、互联网智慧停车平台以及停车场增值服务等。通过不断研发创新&#xff0c;打造出了多样化的…

回归损失函数

目录 1 MAE 2 MSE 3 MAPE 4 Quantile Loss分位数损失 回归损失函数也可以做为评价指标使用&#xff0c;但是有没有想过数据分布与损失函数之间的关系呢&#xff01; 使用特定损失函数的前提是我们对标签的分布进行了某种假设&#xff0c;在这种假设的前提下通过极大似然法推…

Eclipse中 Maven安装与配置步骤,2024年最新面试总结

先自我介绍一下&#xff0c;小编浙江大学毕业&#xff0c;去过华为、字节跳动等大厂&#xff0c;目前阿里P7 深知大多数程序员&#xff0c;想要提升技能&#xff0c;往往是自己摸索成长&#xff0c;但自己不成体系的自学效果低效又漫长&#xff0c;而且极易碰到天花板技术停滞…