Android 如何 ListView 判断滚动到最顶部或者底部 ,首行距离屏幕边缘距离

 

Android 如何 ListView 判断滚动到最顶部或者底部

如何判断 ListView 滑动到顶部和底部?网上一搜,最多的答案都是这样的:

[java] view plain copy
  1.  mListView.setOnScrollListener(new AbsListView.OnScrollListener() {  
  2.     @Override  
  3.     public void onScrollStateChanged(AbsListView view, int scrollState) {  
  4.     }  
  5.   
  6.   
  7.     @Override  
  8.     public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {  
  9.         if (firstVisibleItem == 0) {  
  10.             Log.d("ListView""##### 滚动到顶部 #####");  
  11.         } else if ((firstVisibleItem + visibleItemCount) == totalItemCount) {  
  12.             Log.d("ListView""##### 滚动到底部 ######");  
  13.         }  
  14.     }  
  15. });  

这一段代码并不能够精确地判断 ListView 是否到达最顶部或者最底部。因为只要ListView中第一个item出现在屏幕上端,即使只出现一部分,firstVisibleItem 的值也依然为0, onScroll()回调就会发生; 同样ListView 的最后一个 item 即使只显示一部分,((firstVisibleItem + visibleItemCount) == totalItemCount) 的值也是等于totalItemCount。



Android上ListView默认行都是置顶的,在实际情况下可能需要设置距离顶部的距离,今天设置一下布局

[html] view plain copy
  1. <ListView  
  2.     android:id="@+id/agenda_view"  
  3.     android:paddingLeft="8dp"  
  4.     android:paddingRight="8dp"  
  5.     android:layout_width="match_parent"  
  6.     android:layout_height="wrap_content"  
  7.     android:paddingTop="15dp"  
  8.     android:dividerHeight="6dp">  
  9. </ListView>  

的确实现了listview距离顶部有一段距离,但是出现了一个问题,那就是那段距离不会随着listview的滑动而滑动上去,后来搜索了一下只需要设置clipToPadding属性即可

[html] view plain copy
  1. <ListView  
  2.     android:clipToPadding="false"  
  3.     android:id="@+id/agenda_view"  
  4.     android:paddingLeft="8dp"  
  5.     android:paddingRight="8dp"  
  6.     android:layout_width="match_parent"  
  7.     android:layout_height="wrap_content"  
  8.     android:paddingTop="15dp"  
  9.     android:dividerHeight="6dp">  
  10. </ListView>  

clipToPadding用来定义ViewGroup是否允许在padding中绘制。默认情况下,cliptopadding被设置为ture, 也就是把padding中的值都进行裁切了
阅读更多
换一批

没有更多推荐了,返回首页