1. 为自定义Preference 添加背景:custom_preference_background.xml
- "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
- "1.0" encoding="utf-8"?>
"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">
-
-
- android: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"/>
-
-
- android: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"/>
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">
- <path
- android: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"/>
- <path
- android: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();
-
-
- }
-
- @Override
- public 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.CustomClickPreference
- app:iconDrawable="@drawable/ic_preference_back"
- app:isPreferenceVisible="false"
- app:key="key_document_help"
- app:title="帮助文档" />
7. 效果如图:

-
相关阅读:
Dubbo学习(四)——Dubbo的常用场景
分享一个2022年火遍全网的Python框架
centos7磁盘挂载及目录扩容
人工智能科学计算库—Numpy教程
C++中迭代器的使用
[附源码]java毕业设计课程作业管理系统
【Linux】基础IO —— 下(实现动静态库)
【校招VIP】【约起来】高校大学生自己的商业项目|产品脑图的重要性:活动模型的细节
Python:基础&爬虫
MySQL的存储引擎
-
原文地址:https://blog.csdn.net/dengfuma/article/details/137811567