在安卓开发中,如何自定义ScrollView实现一键置顶功能。

自定义一个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);

猜你喜欢

转载自blog.csdn.net/gg820796/article/details/108653958