在很多新闻类项目中,我们向下滑动列表查看新闻,一般都会实现下拉刷新,上拉加载更多的功能,有时我们滑到了很底部,这时需要刷新或上拉到顶部就很麻烦,所以需要一键置顶,很多项目中都有这种设计,那么该怎么实现呢?
下面提供一种实现思路,不是很麻烦,直接上代码:
public class GoTopScrollView extends ScrollView implements
View.OnClickListener { // 置顶按钮 private ImageView goTopBtn; public
GoTopScrollView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle); } public void setScrollListener(ImageView
goTopBtn) { this.goTopBtn = goTopBtn; this.goTopBtn.setOnClickListener(this); }
@Override protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt); // 滑动距离超过200px,出现向上按钮 if(t > 200) {
goTopBtn.setVisibility(View.VISIBLE); } else {
goTopBtn.setVisibility(View.GONE); } } @Override public void onClick(View v) {
if(v.getId() == R.id.imageView) { this.smoothScrollTo(0, 0); } } }
然后在将这个自定义的ScrollView嵌在ListView的外面,使用方法如下:在ScrollView中添加一个ImageView,ScrollView实质上是一个FrameLayout,setCrollListener(imageView)即可