1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > android listview 移动到顶部 android listview滚动到顶部

android listview 移动到顶部 android listview滚动到顶部

时间:2019-01-07 20:54:47

相关推荐

android listview 移动到顶部 android listview滚动到顶部

1.为了实现类似IOS点击状态栏,列表回滚到顶部的功能(要平滑滚动效果),android上点击一个按钮或是图片什么的也可以让listview一次性滚动到顶部(滑动太多页时,一次可能滚不到顶部,使用handler定时监听,继续滚动,直至回到顶部)

public static void scrollToListviewTop(final AbsListView listView)

{

listView.smoothScrollToPosition(0);

final Handler handler = new Handler();

handler.postDelayed(new Runnable()

{

@Override

public void run()

{

if (listView.getFirstVisiblePosition() > 0)

{

listView.smoothScrollToPosition(0);

handler.postDelayed(this, 100);

}

}

}, 100);

}

此方法的优点是:适用于任何的listview(item单一样式的,多种样式的都可以),而且不存在界面显示问题

缺点是:滑动数据量很大时,回滚时间会比较长。

2.对于单一样式且数据较少的listview,滑动停止时可以计算出滚动的高度,回滚时使用listView.smoothScrollBy(getScrollY(), 500);

listview滚动高度原理是假设每个item的高度是一定的(多数情况下的确如此),那么只要知道当前在第几个item,就可以计算出总的高度,因为第一个可见item的一部分可能已经移出了边界,所以再通过mListView.getChildAt(0)获得第一个子view,使用getTop()方法计算出这个偏差(得到的一般是负数)。因为是回滚,所以最后滚动距离要是负数,另外可能会有一定的误差,适当的加上个负数,综合起来就可以计算出当前ListView的滚动高度。这种滚动效果比较自然,快到顶部时滚动速度越来越慢,最后停止。

public int getScrollY()

{

View c = listView.getChildAt(0);

if (c == null)

{

return 0;

}

int firstVisiblePosition = listView.getFirstVisiblePosition();

int top = c.getTop();

if (firstVisiblePosition == 0)

{

return top;

}

else

{

return top - (firstVisiblePosition - 1) * c.getHeight() - 17;

}

}

3.如果只要求回到顶部,不需要滚动效果的话,很简单,只需要调用listview.setSelection(0)就ok了。

原文:/july/p/4081929.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。