前言

项目中会经常用到横向的图文布局,比如下面这些:

还有这样的布局,经常出现在设置性的界面:

这些布局虽然不难,但是长相类似,频繁出现,每次都要手写这么多代码还是很累的。完全可以自定义一个布局,兼容这些常见的场景,通过对外暴漏一些属性来设置里面的内容。

实现

于是我自定义了SuperLayout,实现了常见的场景。使用时只需要写一个布局,设置一些属性即可实现效果,能将原先手写的布局代码减少80%左右,大大提高布局的编写效率。

在xml中这样使用:

<com.lxj.androidktx.widget.SuperLayoutandroid:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:paddingLeft="14dp"android:paddingRight="15dp"android:paddingTop="10dp"android:paddingBottom="10dp"android:layout_marginTop="15dp"app:sl_leftImageSrc="@drawable/avatar"app:sl_leftText="头像"app:sl_leftTextColor="#222"app:sl_leftTextSize="18sp"app:sl_rightImageSrc="@mipmap/jt"app:sl_solid="#3EDCE9"app:sl_corner="15dp"app:sl_strokeWidth="2dp"app:sl_stroke="#f00"android:layout_width="match_parent"android:layout_height="wrap_content"/>
复制代码

所有可以设置的属性如下:

 <declare-styleable name="SuperLayout"><attr name="sl_leftImageSrc" format="reference"/><attr name="sl_leftImageSize" format="dimension"/><attr name="sl_leftText" format="string"/><attr name="sl_leftTextColor" format="color"/><attr name="sl_leftTextSize" format="dimension"/><attr name="sl_leftTextMarginLeft" format="dimension"/><attr name="sl_leftTextMarginTop" format="dimension"/><attr name="sl_leftTextMarginRight" format="dimension"/><attr name="sl_leftTextMarginBottom" format="dimension"/><attr name="sl_leftSubText" format="string"/><attr name="sl_leftSubTextColor" format="color"/><attr name="sl_leftSubTextSize" format="dimension"/><attr name="sl_centerText" format="string"/><attr name="sl_centerTextColor" format="color"/><attr name="sl_centerTextGravity" format="integer" /><attr name="sl_centerTextBg" format="reference"/><attr name="sl_centerTextSize" format="dimension"/><attr name="sl_rightText" format="string"/><attr name="sl_rightTextColor" format="color"/><attr name="sl_rightTextSize" format="dimension"/><attr name="sl_rightTextBg" format="reference"/><attr name="sl_rightTextBgColor" format="color"/><attr name="sl_rightTextVerticalPadding" format="dimension"/><attr name="sl_rightTextHorizontalPadding" format="dimension"/><attr name="sl_rightImageSrc" format="reference"/><attr name="sl_rightImageMarginLeft" format="dimension"/><attr name="sl_rightImageSize" format="dimension"/><attr name="sl_rightImage2Src" format="reference"/><attr name="sl_rightImage2MarginLeft" format="dimension"/><attr name="sl_rightImage2Size" format="dimension"/><attr name="sl_solid" format="color"/><attr name="sl_corner" format="dimension"/><attr name="sl_stroke" format="color"/><attr name="sl_strokeWidth" format="dimension"/><attr name="sl_topLineColor" format="color"/><attr name="sl_bottomLineColor" format="color"/><attr name="sl_enableRipple" format="boolean"/><attr name="sl_rippleColor" format="color"/>
</declare-styleable>
复制代码

添加依赖

在使用之前需要先添加依赖,这个类放在了AndroidKTX类库中,需要依赖一下:

implementation 'com.lxj:androidktx:1.2.0'
//for androidx
implementation 'com.lxj:androidktx:1.2.0-x'
复制代码

AndroidKTX包含了一些列非常有用的Kotlin扩展和通用控件,代码不多,个个都很实用。如果你用Kotlin开发,一定不要错过。它的地址是:github.com/li-xiaojun/…

一款超级实用的SuperLayout相关推荐

  1. 前端技巧|Chrome上4款超级实用的插件!

    作为一个前端程序猿,你打开他的Chrome浏览器,在里面肯定会看到不少的插件,这些插件简直好用到不用太方便.今天小千就来给大家介绍4款超级实用的插件,不需要懂前端就能轻松使用,错过就是一个亿哦~~ 1 ...

  2. APP技巧:推荐6款超级实用的APP软件,赶快下载试试吧!

    今天小编给大家6款超级实用的App软件,大家赶快下载试试吧. 01*ONE·一个 推荐理由:简约的新媒体阅读平台. 生活中往往有太多的碎片化时间,比如等公交.上厕所.排队,我们可以利用这些碎片化的时间 ...

  3. 软件:9款超级实用的办公软件,值得收藏!

    今天给大家分享9款超级实用的办公软件,值得收藏! 一.Quicker 作为全网好评的这款国产软件,可以秒杀很多办公软件.打开它的首页就能看到很多常用的工具,包括截图.快搜.百度翻译.OCR文字识别.o ...

  4. 这四款超级实用的PC软件,你还没用过吗?

    本文将为大家推荐4款超级实用的电脑软件,快来一起看看吧! 1.Billfish 你还在为电脑里杂乱无章,遍地都是的素材苦恼吗?Billfish是一款非常实用的素材管理软件,它可以收集整理在创意设计中涉 ...

  5. 一款超级实用的车辆总线分析系统—VehicleCAN

    ** 一款超级实用的车辆总线分析系统-VehicleCAN ** 汽车CAN总线全称为"控制器局域网(Controller Area Network)",是一种能有效支持分布式控制 ...

  6. 强势分享5款超级实用的办公软件,建议收藏!

    !!!!!实用预警!!!!!! 小智整理了5款超级好用的办公软件,可以提高你的办公效率,直接上干货! 1.Cencrack在线工具箱 Cencrack是一个非常强大的工具箱软件,里面有大量实用的工具, ...

  7. python 仿真模型库_5款超级实用的Python工具库

    Python 中好玩.实用的工具非常多,这给我们的工作学习带来极大的方便和乐趣.在之前文章中我已多次分享过一些实用的工具,今天我再分享 5 款非常实用的工具: 1.Black Black 是一款非常棒 ...

  8. 10 款 VS Code 插件神器,第 7 款超级实用!

    VS Code 是这两年非常热门的一款 IDE,它不仅有提升开发体验的界面.轻量化的编辑器,还有丰富而强大的插件,这些优秀的插件使得 VS Code 生态体系更加吸引人,让开发效率大大提升.本文来介绍 ...

  9. axure 浏览器插件_7款超级实用的谷歌浏览器插件

    作为Web开发者,日常工作生活中自然离不开浏览器,谷歌浏览器作为首选,今天就为大家推荐几款实用的谷歌浏览器插件. 01 Vue.js devtools 助力Vue项目开发,vue粉必备开发神器 02  ...

最新文章

  1. 为什么你看了那么多面经,面试还是挂了?
  2. SLS:海量日志数据管理利器
  3. 后台获得客户端IP地址
  4. Java 11 新特性
  5. [异常解决] MPU6050启动异常读出陀螺仪和加速度计的值全为0的解决办法
  6. mysql 查询字段语句_mysql查询语句常用字段操作函数
  7. 第12章 样式(三)
  8. BZOJ 1211 树的计数(purfer序列)
  9. bzoj4919 [Lydsy1706月赛]大根堆
  10. cstring判断包含字符串_作为java程序员要知道的大厂常见的算法面试题:字符串的包含...
  11. python画彩虹爱心_用python画一颗彩虹色爱心送给女朋友!!!
  12. 腾讯拟全资收购搜狗,王小川:感谢认可,将认真讨论和衡量
  13. android:inputType参数类型说明
  14. 一部分 数据 迁移_超原版速度110倍,针对PyTorch的CPU到GPU张量迁移工具开源
  15. 实验7 BindService模拟通信
  16. Flutter 实现 仿Android原生启动模式SingleTask
  17. Echarts中饼状图显示百分比
  18. Windows下获得当前目录下的所有文件的文件名并输出到文件
  19. 【学术】写文章的框架
  20. java 填充字符串_Java字符串右补齐——String.format

热门文章

  1. 老子《道德经》第三章
  2. 怎么把VC++的注释语句调成其他颜色,只调注释语句
  3. Leetcode 5
  4. 『不再迷茫 - 正则表达式』JS正则要点梳理 持续更新
  5. 《逻辑与计算机设计基础(原书第5版)》——1.7 格雷码
  6. node.js 事件循环
  7. Linux线程同步读写锁 rwlock
  8. Python 基础---列表
  9. error C2265: 'Unknown' : reference to a zero-sized array is illegal
  10. 黄聪:WordPress图片插件:Auto Highslide修改版(转)