ListView已到底部和顶部的判断

一、 理解Android坐标,位置概念
坐标系在二维视图中通过X轴和Y轴两个数字为组合表示某个点的绝对坐标。 例如(30, 100) 通常表示X轴30, Y轴100交叉的一个点。 在Android中以左上角为原点(0,0),水平方向是X轴,从左到右,垂直方向是Y轴,从上到下,可以把left相当于X轴值, top相当于Y轴值, 通过这两个值Android系统可以知道视图的绘制起点,在通过Wdith 和 Height 可以得到视图上下左右具体值,就可以在屏幕上绝对位置绘制视图。right 与 bottom计算如下:
right = left + width;
bottom = top + height;


二、 View中相应API
view.getLeft()表示的是view左侧以其父View的左上角为原点的水平坐标位置 ;
view.getRight()表示的view右侧以其父View的左上角为原点的水平坐标位置 ;
view.getTop()表示的是view顶部以父View的左上角为原点的垂直坐标位置 ;
view.getBottom()表示的是view底部以父View的左上角为原点的垂直坐标位置 ;
view.getWidth()表示view宽度;
view.getHeight()表示view高度 ;


1>ListView已到顶部的判断

<span style="font-size:18px;"> public boolean isListViewReachTopEdge(final ListView listView) {
                boolean result=false;
                if(listView.getFirstVisiblePosition()==0){
                    final View topChildView = listView.getChildAt(0);
                    result=topChildView.getTop()==0;
                }
                return result ;
            }</span>

注:view的getTop()表示的是该View的顶部到父控件的左上角的垂直距离。
当ListView的第一个child View的getTop()为零时,就表示ListView已经滚动到顶部了或已经在顶部不能在向上滑动了


2>ListView已到底部的判断

<span style="font-size:18px;">public boolean isListViewReachBottomEdge(final ListView listView) {
                boolean result=false;
                if (listView.getLastVisiblePosition() == (listView.getCount() - 1)) {
                    final View bottomChildView = listView.getChildAt(listView.getLastVisiblePosition() - listView.getFirstVisiblePosition());
                    result= (listView.getHeight()>=bottomChildView.getBottom());
                };
                return  result;
            }</span>

注:view的getBottom()表示的是该View底部到父控件的左上角的垂直距离
当ListView的最后一个child View的getBottom()小于等于ListView的getHeight()时,就表示ListView滚动到底部或已经在底部了,不能再向下滑动了。

关于View的getLeft, getRight, getTop, getBottom更多内容请参考点击打开链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值