
凯特社区不支持动图
也就没有效果图了
比较
上下效果一致 行数 层级
上部分 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
举报 0