在很多新闻类项目中,我们向下滑动列表查看新闻,一般都会实现下拉刷新,上拉加载更多的功能,有时我们滑到了很底部,这时需要刷新或上拉到顶部就很麻烦,所以需要一键置顶,很多项目中都有这种设计,那么该怎么实现呢?
下面提供一种实现思路,不是很麻烦,直接上代码:
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)即可