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首行距离屏幕边缘距离

 

 

 

 

 

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中的值都进行裁切了

Adapter中重写getItem()方法获取item对象

@Override
    public Object getItem(int position) {
        return this.getView(position, null, gridView);
    }

 

 

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

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭