做公司项目,首页用的listview显示很多商品.产品的希望在用户滑动后有一个按钮能让列表回到顶部.
查阅了相关资料后,成功实现.
代码如下:
//为listview设置滚动监听 getListView().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) { ViewCompat.animate(viewButton).translationY(10).alpha(1).setDuration(200); viewButton.setVisibility(View.VISIBLE); }else ViewCompat.animate(viewButton).translationY(60).alpha(0).setDuration(200); } });关于listView的onScrollListener我就不多说啦,小伙伴们随便就能查到.
我是根据firstVisibleItem这个字段判断的,这个字段表示的listView当前显示出来的第一个item处于总数据的第几位.
很明显,如果不是第0位,肯定是列表滑动了,那么就通过动画让按钮出现.
按钮给监听让列表回到头部:
viewButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getListView().smoothScrollToPosition(0); } });回到头部后就会触发else里的代码, 将按钮隐藏.
不过有一点小瑕疵,就是按钮消失需要一点时间,这个时候你要是点击按钮所在的位置,列表是没有反应的,不过无伤大雅,反正就不到1s而已.
如有错误,欢迎指正.
谢谢!