android gridview行分割线,GridView分割线

本文介绍了如何在Android中自定义GridView的分割线,通过继承GridView并重写dispatchDraw方法来实现。内容包括了低版本适配、行数计算以及滑动时的错位处理。代码示例展示了如何在每个Item之间绘制直线分割线,并提供了关于为何选择dispatchDraw而不是onDraw的理由。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

GridView分割线在某些情景下可能不是很满足我们的需求,我们自己来实现一个可以自己控制的。这里继承GridView,通过测量绘制方法完成

注意:

1.考虑低版本适配,我们需要反射访问隐藏字段;

2.简单点,这里用直线表示,实际开发中可以根据需要定制要绘制的内容

思路:

1.根据Canvas.drawLine(startX, startY, endX, endY, Paint)方法反推,主要参数为startY与endY,二者必然一致,否则就歪。

2.总行数取值分为一屏以内、超出一屏两种情况。当在一屏内时,GridView高度与item高度取整;超出一屏时item总数与单行个数取整,此时会有不足一行的情况,我们要把多出来的算为一行。

3.在上下滑动时如默认不做任何处理,会出现错位现象,我们需要加上item具体位置,保证不会错位

下面继承GridView实现,根据以上思路实现一下:

[代码]java代码:

protected void dispatchDraw(Canvas canvas) {super.dispatchDraw(canvas); if (getChildCount() <=0)return;int   numColumns = getNumColumnsCompatible(); View child = getChildAt(0);if (child ==null)return;int childHeight = child.getHeight(); int  max = getHeight()/ childHeight; if (getCount() / numColumns > max ) {max = getCount() / numColumns ;int more = getCount() % numColumns ;if (more >0) {max = max +1;}}dividerLine(canvas, childVi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值