【NB】Android 硬布局item的高级写法

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2022-7-27

凯特社区不支持动图
也就没有效果图了

比较
上下效果一致 行数 层级
上部分 121 3
下部分 55 2
下部分继续精简 28 2
可以看出,对比还是很明显的,精简到最后只有最开始的四分之一

上部分
先看常规item写法,横向的LinearLayout嵌套三个子View,分别是

左边的ImageView,
中间的TextView,
和右边的ImageView。
然后每个横向的LinearLayout之间添加一个高度1dp的View来作为横线

最外层LinearLayout的background:


可以看到嵌套虽然不深,但是已经拉的很长,不易阅读修改。

且 哪怕是一层的嵌套优化,也是优化,积少成多。

下部分
利用TextView的drawableStart和drawableEnd属性,来做简化,可以直接去掉左右两边的ImageView。

至于分割线,利用LinearLayout的divider和showDividers属性,写个shape,来做简化,去掉item之间做横线的View

shape:

可以看到,层级减少了,行数也减少了,看起来清爽多了。

style简化
尽管如此,我们还是有可以简化的空间。

TextView有一些共同属性,可以抽取做一个style

再看简化后的代码

更加精简了,只有简化前的一半,共同属性封装,只需要关注业务参数。

核心属性
LinearLayout
divider,分割线
showDividers,分割线的显示方式
layout_marginVertical,代替原来的layout_marginTop、layout_marginBottom
layout_marginHorizontal,代替原来的layout_marginStart、layout_marginEnd
题外话,LinearLayout的android:animateLayoutChanges=”true”,可以在其子view添加移除的时候添加简单的动画。

TextView
drawableEndCompat,即原来的drawableEnd,设置右边的drawable,其他方向同理
drawablePadding,drawable与文字之前的内边距
includeFontPadding,TextView默认top是有6dp的padding的,false可去掉,小细节
foreground,添加这个属性会有水波纹的点击效果,省了写selector

沙发
离云 2022-7-28
。。。未免太水了[呵呵]
板凳
hhhhhh 2022-7-28
基本操作...
正经东西一般都没人看
4楼
玖月๑ 2022-7-30
奖励结算,当前结算等级:1;少侠辛苦了。

评论

登录后才可发表内容
  • 主题

    40

  • 帖子

    2070

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0888s Mem:2097Kb