关于ListView设置分割线的那点事

大家在刚接触Android的时候,ListView肯定是第一个接触到的、也是比较常用的一个比较“高级”一点的控件,说它高级,主要是它在使用的时候比TextView、ImageView等基础控件要复杂一点。
当我们兴致勃勃的学习了ListView和Adapter直接的关系绑定,并且把列表展示出来了之后,遇到一个说起来很简单的一个问题,列表怎么添加分割线?

1、item view里添加分割线

最直接最简单粗暴的方法就是在item view里自己添加分割线。自己想怎么设置都可以。缺点是实现起来不够优雅,当app里有多个列表(使用同样style)展示的时候,不能够复用。

2、设置Divider

其实listview本来就有设置分割线的功能,可以在listview中添加divider属性:

<item name="android:headerDividersEnabled">false</item>
    <item name="android:footerDividersEnabled">false</item>
        <item name="android:dividerHeight">1dp</item>

可以自己设置分割线的高度、颜色,列表头尾是否显示分割线等。

3、Divider的高级扩展

本来分割线就是一个很简单的功能,listview也提供了完备的支持,讲完第二点就OK了,但是如果你遇到了这样一个需求——分割线带边距!不是简单的设置list的padding,是分割线和整个item的边距都不一样,如图:
这里写图片描述
那你要怎么做呢?
如果通过第一种方法在item view里设置分割线肯定是可以的,但是能不能通过divider来优雅的实现呢?答案是肯定的!
主要方法是设置一个divider的drawable,然后设置divider为此drawable,那么关键就是这个drawable怎么写了?直接上代码

<inset xmlns:android="http://schemas.android.com/apk/res/android"
       android:insetLeft="60dp">
    <shape android:shape="rectangle" >
        <solid android:color="@color/color_background" />
    </shape>
</inset>

这里主要用到了嵌入图像InsetDrawable的用法。它可以在背景图上嵌入一些资源,同时可以设置边距。

<inset
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/drawable_resource"
    android:insetTop="dimension"
    android:insetRight="dimension"
    android:insetBottom="dimension"
    android:insetLeft="dimension" />

元素解释:
android:insetTop:图像距离上边的距离。
android:insetRight:图像距离右侧的距离。
android:insetBottom:图像距离底边的距离。
android:insetLeft:图像距离左侧的距离。

到这里完美解决了带边距divider的需求。

如果你觉得文章对你有用,请赞我;如果有任何问题,欢迎留言交流。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值