设置页布局神器!有了它,开发设置页简直是享受
背景故事
最近写到一个设置页的需求,里面加起来有十多项设置,每一项设置都有相应的业务逻辑。
刚开始,我说成,设置页嘛,简单,新建个布局文件,编写一个个layout,后来发现有很多设置项布局是一样的,可以直接复制之前的,但复制多几遍后,我感觉不对劲,这些View都是一样的,我感觉一直在写重复的代码。
不止如此,在代码进行数据初始化时,还需要给每个设置项定义id,然后通过id获取到各个不同的设置项,再进行相应的赋值操作。比如,我们要为每个设置项定义点击事件:
如果只是定义点击事件还好,如果还涉及设置项的显示和隐藏,那就恶心了,你的代码会出现会多setVisbility的代码,后续这样的代码维护起来也很麻烦。
如果设置项一多,在布局文件中一个个写Layout肯定不是办法。
看看微信的设置,这么多设置项,如果要我在布局文件中一个个写View,那工作量就大了。
所以基于上面的考虑,SettingPie由此而生。
简单使用
首先将其引入到项目中,SettingPie采用kotlin编写,java也可以使用。
dependencies {implementation 'io.github.jamgudev:settingpie:1.0.0'
}
如果你想在设置列表中添加一个标题
你可以这样设置:
SetListBuilder(recyclerView).addItem {SetItemBuilder().viewType(VIEW_TYPE_TEXT_TITLE).mainText("端游角色卡设置", 14, "#999999")}.build()
SettingPie是基于RecyclerView的,所以需要在构造方法中传入recyclerView实例,后续添加的设置项都会放入到该RecyclerView中。
在addItem内传入布局类型,以及属性配置,即可添加一个文本。
而如果你接下来希望有这样的设置项:
可以添加这样的代码:
SetListBuilder(binding.recycler).showDecoration(true) // 默认不显示分割线,如果需要显示需置为true.addItem {SetItemBuilder().viewType(VIEW_TYPE_TEXT_TITLE).mainText("端游角色卡设置", 14, "#999999")}.addItem {SetItemBuilder().viewType(VIEW_TYPE_NORMAL).mainText("角色动作", textColor = "#999999").hintText("攻击").layoutProp(LayoutProp {Toast.makeText(this@MainActivity, "clicked", Toast.LENGTH_SHORT).show()}).hintIcon("https://q.qlogo.cn/qqapp/1104466820/2480FDF9E6072E6536CE5FF7B946674F/100").mainIcon("https://q.qlogo.cn/qqapp/1104466820/2480FDF9E6072E6536CE5FF7B946674F/100")}.addItem {SetItemBuilder().viewType(VIEW_TYPE_NORMAL).mainText("光效").hintText("九幽冥火").hintIcon("http://img.daimg.com/uploads/allimg/210729/3-210H92301020-L.jpg").mainIcon(R.drawable.ic_launcher_background)}.build()
其实也就是新增两项viewType为VIEW_TYPE_NORMAL
的Item,通过在mainText()中设置文字的属性、颜色等,还可以通过layoutProp设置点击事件。
如果你想要第二栏的头像显示为圆形,可以在传入url值时,同时传入一个足够大的圆角,如下:
.hintIcon(url, 16)
hintIcon()有很多重载,你可以利用这些方法,对图片进行详细的设置,例如图片的大小、加载图片时的placeHolder,errorHolder等。
同时也支持加载本地的资源文件,传入资源ID即可
上面添加的设置项与之前的设置项都是紧挨着的,如果要设置页表现如下,应该怎么设置呢?
.addGroupItems {ArrayList<SetItemBuilder>().apply {add(SetItemBuilder().viewType(VIEW_TYPE_NORMAL).mainText("光效").hintText("九幽冥火").hintIcon("http://img.daimg.com/uploads/allimg/210729/3-210H92301020-L.jpg").mainIcon(R.drawable.default_img_placeholder))add(SetItemBuilder().viewType(VIEW_TYPE_CHECKBOX).mainText("展示外观").checkBoxProp(CheckBoxProp(true, 50) { _, isChecked ->Toast.makeText(this@MainActivity,"check box clicked = $isChecked",Toast.LENGTH_SHORT).show()}).layoutProp(LayoutProp {Toast.makeText(this@MainActivity, "clicked", Toast.LENGTH_SHORT).show()}))add(SetItemBuilder().viewType(VIEW_TYPE_NORMAL).mainText("光效").hintText("九幽冥火").mainIcon(R.drawable.default_img_placeholder))}
}
只需要接着add就可以了,只不过这次调用的addGroupItems()
,以添加整组的方式,SettingPie会自动在组前,添加一道较宽的分隔线来间隔。
SettingPie还支持设置内边距、列表分割线等其他属性,更多的用法请访问SettingPie的主页:https://github.com/jamgudev/SettingCreatorHelper,如果觉得我写的还不错,欢迎start和fork支持。
兄dei,如果觉得我写的还不错,麻烦帮个忙呗
设置页布局神器!有了它,开发设置页简直是享受相关推荐
- 15-微信小程序商城 产品评价页布局(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
产品评价页布局 本节主要讲解产品评价页的布局和实现,效果如图13-22所示. 1.布局分析 结构布局分析示意如图13-23所示. 根据上面的布局分析,我们会产生基础的框架,代码示例如下: <vi ...
- android button 中文字位置设置,iOS开发-- 设置UIButton的文字显示位置、字体的大小、字体的颜色...
btn.frame = CGRectMake(x, y, width, height); [btn setTitle: @"search" forState: UIControlS ...
- html 打印指定区域并去掉页眉、页脚,设置打印布局(纵向、横向)
<style type="text/css"> table{font-size:18px; border-collapse:collapse; text-align: ...
- DevExpress.XtraReports报表,动态设置报表布局
本文描述的动态开发报表的方式已封装成DLL,现向外发布,需要请猛击这里. 引言 上回负责报表这块,说不能再像以前的项目一样的做报表了,以前项目300多张报表,一张一张的画,一张一张的写存储过程,工作量 ...
- 移动web基础:视口(viewport),流式布局 JDM京东移动端开发
目标 能够理解视口的概念并进行视口的设置 能够说出流式布局的基本布局特征 能够使用 2倍图进行页面开发 能够实现 京东首页的 头部布局 移动web基础 移动端调试问题 模拟器调试 真机调试:使用手机进 ...
- 书籍折页是什么效果_Word的书籍折页是什么 如何设置Word的书籍折页
书籍折页是Microsoft Word中用来创建菜单.请柬.事件程序或任何其他类型的使用单独居中折页的文档功能的选项.具体在"文件"-"页面设置"对话框中的&q ...
- vue.js 多页 php,如何使用 vue-cli 开发多页应用方法
如何使用 vue-cli 开发多页应用?本文主要介绍了详解如何使用 vue-cli 开发多页应用,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助到大家. 全局配置 修改 webpack ...
- css background 充满自适应_剖析一些经典的CSS布局问题,为前端开发+面试保驾护航...
一.让一个元素水平垂直居中,到底有多少种方案? 水平居中 对于 行内元素: text-align: center; 对于确定宽度的块级元素: width和margin实现.margin: 0 auto ...
- bootstrap怎么强制不换行_【Word考点】页面设置:页边距、分隔符要怎么设置?如何分栏?...
跟着步骤操作会让思路更清晰.两个真理:积少成多 | 实践是检验真理的唯一标准. 接下来的时间会将MS Office的知识点一个个来讲解,所以先从Word开始吧,这次主要说的内容都在[页面布局]选项卡中 ...
最新文章
- 优秀校园网站评比标准
- idea自动生成get set_CTO:不要在Java代码中写set/get方法了,逮一次罚款
- 程序员面对下列技术问题,如何做决策
- flv播放器以及调用代码
- win10如何关闭文件夹或者照片的最近浏览?
- 基于Linux的虚拟主机搭建
- O-RAN:致力于ICDT融合,打造开放与智能的无线接入网
- 51nod 1489 蜥蜴和地下室
- k8s nodeSelector和affinity
- Mahout学习笔记-分类算法之Decision Forest
- flask web开发是前端还是后端_后端开发该不该学前端开发?
- 比特率和波特率有什么区别吗?
- 对称密钥加密、非对称密钥加密、混合加密机制
- Opencv相机校准之棋盘格标定
- c语言字符串作业题,C语言课后习题练习(四)
- 8255并行接口与交通灯控制
- UIPATH 调用SAP BAPI
- 人民币对美元汇率中间价报6.7560元 上调349个基点
- C/C++程序员是什么让你有如此优势?音视频开发该怎么学?
- jmeter伪造ip进行压测(伪造大量ip,测试负载均衡)
热门文章
产品评价页布局 本节主要讲解产品评价页的布局和实现,效果如图13-22所示. 1.布局分析 结构布局分析示意如图13-23所示. 根据上面的布局分析,我们会产生基础的框架,代码示例如下: <vi ...
btn.frame = CGRectMake(x, y, width, height); [btn setTitle: @"search" forState: UIControlS ...
<style type="text/css"> table{font-size:18px; border-collapse:collapse; text-align: ...
本文描述的动态开发报表的方式已封装成DLL,现向外发布,需要请猛击这里. 引言 上回负责报表这块,说不能再像以前的项目一样的做报表了,以前项目300多张报表,一张一张的画,一张一张的写存储过程,工作量 ...
目标 能够理解视口的概念并进行视口的设置 能够说出流式布局的基本布局特征 能够使用 2倍图进行页面开发 能够实现 京东首页的 头部布局 移动web基础 移动端调试问题 模拟器调试 真机调试:使用手机进 ...
书籍折页是Microsoft Word中用来创建菜单.请柬.事件程序或任何其他类型的使用单独居中折页的文档功能的选项.具体在"文件"-"页面设置"对话框中的&q ...
如何使用 vue-cli 开发多页应用?本文主要介绍了详解如何使用 vue-cli 开发多页应用,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助到大家. 全局配置 修改 webpack ...
一.让一个元素水平垂直居中,到底有多少种方案? 水平居中 对于 行内元素: text-align: center; 对于确定宽度的块级元素: width和margin实现.margin: 0 auto ...
跟着步骤操作会让思路更清晰.两个真理:积少成多 | 实践是检验真理的唯一标准. 接下来的时间会将MS Office的知识点一个个来讲解,所以先从Word开始吧,这次主要说的内容都在[页面布局]选项卡中 ...