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

xiaoxiao2021-02-28  84

 

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

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

 

[java] view plain copy

 mListView.setOnScrollListener(new AbsListView.OnScrollListener() {      @Override      public void onScrollStateChanged(AbsListView view, int scrollState) {      }          @Override      public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {          if (firstVisibleItem == 0) {              Log.d("ListView""##### 滚动到顶部 #####");          } else if ((firstVisibleItem + visibleItemCount) == totalItemCount) {              Log.d("ListView""##### 滚动到底部 ######");          }      }  });  

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

 

 

Android实现ListView首行距离屏幕边缘距离

 

 

 

 

 

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

 

[html] view plain copy

<ListView      android:id="@+id/agenda_view"      android:paddingLeft="8dp"      android:paddingRight="8dp"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:paddingTop="15dp"      android:dividerHeight="6dp">  </ListView>  

 

 

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

 

[html] view plain copy

<ListView      android:clipToPadding="false"      android:id="@+id/agenda_view"      android:paddingLeft="8dp"      android:paddingRight="8dp"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:paddingTop="15dp"      android:dividerHeight="6dp">  </ListView>  

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

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

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

 

 

转载请注明原文地址: https://www.6miu.com/read-77157.html

最新回复(0)