自定义Preference布局

  • 借助 Preference 来实现
    • 定义一个主题
  • 自己实现
  • 注意点

Preference 在 Android 设置相关的应用开发中非常常用,Preference 一般具有一个 title 和一个 summary 来对 Preference 进行描述。在一些其它的开发中,也常用到这样的布局——具有一个标题,标题下有一个具体的描述。故而可以借助Preference 来简化实现,或参考 Preference 的实现来开发自己的功能。

借助 Preference 来实现

Preference 的布局一般是在 XML 文件中书写 Screen 来实现的。这种方式布局是固定的,很难实现自定义的布局。 PreferenceFragment 的实现关键实现代码如下:

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {......mLayoutResId = a.getResourceId(R.styleable.PreferenceFragmentCompat_android_layout,mLayoutResId);......final View view = themedInflater.inflate(mLayoutResId, container, false);final View rawListContainer = view.findViewById(AndroidResources.ANDROID_R_LIST_CONTAINER);if (!(rawListContainer instanceof ViewGroup)) {throw new IllegalStateException("Content has view with id attribute "+ "'android.R.id.list_container' that is not a ViewGroup class");}final ViewGroup listContainer = (ViewGroup) rawListContainer;final RecyclerView listView = onCreateRecyclerView(themedInflater, listContainer, savedInstanceState);......

可以看到其布局是通过 android:layout 来设置的,所以可以设置一个主题,在主题中指定布局。布局中要有一个名为AndroidResources.ANDROID_R_LIST_CONTAINER 的 container 即可。

定义一个主题

定义个主题,主题中指定android:layout,即自定义的布局即可,然后将这个布局应用到需要Activity 上即可。

<style name="Theme.XXX.XXX" parent="Theme.XXX"><item name="android:layout">@layout/XXX</item>
</style>

自己实现

查看 Preference 的源码可以发现Android 的实现是通过 List 和 Adapter 来绑定 解析后的 XML数据来实现的,所以可以自定义XML 的解析器,生成需要显示的数据,然后用Adapter 来胜场每个条目的显示布局。

注意点

文字的国际化问题

XmlResourceParser.getAttributeValue() // 获取数据不会自动国际化// 实现国际化
private inline fun getResourceString(nameSpace: String?, attribute: String): String{val resId = xmlParser.getAttributeResourceValue(nameSpace, attribute, -1)return context.getString(resId)}

Android Preference 的布局思考相关推荐

  1. Android Bitmap 研究与思考(上篇)

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/107951273 本文出自[赵彦军的博客] 做Android 6年来,一直都没有对 ...

  2. Android Preference 的使用

    设置(Settings) 应用程序通常包括允许用户修改应用程序的特性和行为的设置功能.例如,一些应用程序允许用户指定通知是否启用或指定多久使用云同步数据.如果你想要 为你的应用程序提供设置,你应该使用 ...

  3. android preference 启动activity,Android PreferenceActivity 学习笔记

    在Ap中有时需要设置一些配置参数,这些参数通过配置文件保存. 为了设置这些参数,需要提供一个UI,针对这种需求,Android提供了preferenceActivity. PreferenceActi ...

  4. android Preference以及监听事件学习

    [size=medium][b]基础知识[/b][/size] 在Android系统源码中,[color=red]绝大多数应用程序的UI布局采用了Preference的布局结构[/color],而不是 ...

  5. Android Preference 知识点

    0介绍 Android系统内的设置界面由Android Preference相关类提供,使用preference这个键值对的方式来自动保存这些数据,并即时生效,同时Android提供一种类似layou ...

  6. Android Preference详解之初识Preference及Preference系(一)

    Android Preference详解之初识Preference及Preference系(一) 转载:https://blog.csdn.net/google_huchun/article/deta ...

  7. android preference控件,Android Preference 设置项简单使用详解

    Preference 是Android App 中重要的控件之一,Settings 模块大部分都是通过 Preference 实现的. 使用方法 一般在 XML 文件夹中创建 xml 文件来对 Set ...

  8. Android Preference使用

    摘要:AndroidPreference经常使用在例如设置的功能,Android提供preference这个键值对的方式来处理这种情况,自动保存这些数据,并立时生效,这种就是使用androidshar ...

  9. Android插件化的思考——仿QQ一键换肤,思考比实现更重要!

    Android插件化的思考--仿QQ一键换肤,思考比实现更重要! 今天群友希望写一个关于插件的Blog,思来想去,插件也不是很懂,只是用大致的思路看看能不能模拟一个,思路还是比较重要的,如果你有兴趣的 ...

最新文章

  1. CentOS 7 命令
  2. HDU5762(暴力)
  3. SQLHelper类
  4. python编程面试题
  5. NYOJ 52 无聊的小明
  6. python读取大文件的某行_Python按行读取文件的实现方法【小文件和大文件读取】...
  7. 计算机2级什么时间考,全国计算机2级考试什么时间出成绩单
  8. 详解vue动画的封装
  9. jquery常用方法以及详解
  10. Batch Normalization 反向传播(backpropagation )公式的推导
  11. 这就是神经网络 7:深度学习-目标检测-超详细图解Faster R-CNN
  12. 计算机网络 简单网络管理协议 SNMP
  13. 艾敦制表神器实现EXCEL邮件合并
  14. C++:实现量化CPI债券交换测试实例
  15. 王厚祥谈《古诗四帖》基本笔画的书写方法
  16. 【愚公系列】2023年02月 WMS智能仓储系统-010.全局过滤、中间件、格式化配置
  17. 首批 | 腾讯云完成国内首个云原生安全成熟度评估
  18. 蒲丰投针问题的matlab仿真
  19. zepto和jquery
  20. 广域网(WAN)简介

热门文章

  1. 2021-05-17Leetcode198.打家劫舍
  2. 037卫星通信调制技术知识点
  3. 与另一台计算机建立ipc,怎样通过IPC连接到另一台计算机?
  4. 炸板 全都跳水了 我们正在见证2015年
  5. PhotoshopCS3反应慢的问题
  6. 神策数据唐予轩:一文看懂效果广告渠道追踪能力搭建与分析
  7. Easyrecovery数据恢复软件工作原理及使用介绍教程
  8. Discuz论坛无法上传头像/ 企业邮箱被归为垃圾邮件的问题
  9. java minor gc 停时,java Minor GC、 Full GC之间的区别
  10. 全拼输入法在计算机内部,全拼输入法,怎么安装在电脑里?