自定义一个GoTopScrollView,并设置监听回调。废话不多说,上代码。
public class GoTopScrollView extends ScrollView implements View.OnClickListener {
private ImageView goTopBtn;
public GoTopScrollView(Context context) {
super(context);
}
public void setScrollListener(ImageView goTopBtn) {
this.goTopBtn = goTopBtn;
this.goTopBtn.setOnClickListener(this);
}
public GoTopScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public GoTopScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public GoTopScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onScrollChanged(int l, int t, int oldl, int oldt) {
super.onScrollChanged(l, t, oldl, oldt);
//滑动距离超过450px,出现置顶按钮.
if (t >= 450) {
goTopBtn.setVisibility(View.VISIBLE);
} else {
goTopBtn.setVisibility(View.GONE);
}
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.iv_top) {
//点击之后滚动流畅会顶端
this.smoothScrollTo(0, 0);
}
}
}
接下来,在你想要实现置顶的界面中,加入一下代码便可实现。
GoTopScrollView goTopScrollView = findViewById(R.id.gt_sl);
mageView ivTop = findViewById(R.id.iv_top); //此处为置顶的图片
goTopScrollView.setScrollListener(ivTop);