ScrollWebView的滑动距离显示内容

项目中需要实现一种效果:当WebView内容滚动一定距离后,标题栏显示标题和头像。标准的WebView无法直接达到此效果,因此需要创建一个可滚动的自定义WebView。通过设置OnScrollChangedCallback监听滚动事件,当滚动距离超过200像素时,显示标题和头像;否则隐藏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做项目的时候有个这样的效果,页面的内容滑动一段距离以后,标题栏显示标题内容和头像。这个效果正常的WebView是达不到的,这时候就需要自定义可滑动的WebView了。下面看下滑动Webview的代码。


public class ScrollWebView extends WebView{
	private OnScrollChangedCallback mOnScrollChangedCallback;
	public ScrollWebView(Context context) {
		super(context);
	}
	public ScrollWebView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	public ScrollWebView(Context context, AttributeSet attrs, int defStyleAttr) {
		super(context, attrs, defStyleAttr);
	}
	@Override
	protected void onScrollChanged(int l, int t, int oldl, int oldt) {
		super.onScrollChanged(l, t, oldl, oldt);
		if (mOnScrollChangedCallback != null) {
            mOnScrollChangedCallback.onScroll(l - oldl, t - oldt);
            
            mOnScrollChangedCallback.onScrollY(t);
        }
	}  
	public OnScrollChangedCallback getOnScrollChangedCallback() {
        return mOnScrollChangedCallback;
    }
 
    public void setOnScrollChangedCallback(
            final OnScrollChangedCallback onScrollChangedCallback) {
        mOnScrollChangedCallback = onScrollChangedCallback;
    }
	
	  /**
     * Impliment in the activity/fragment/view that you want to listen to the webview
     */
    public static interface OnScrollChangedCallback {
        public void onScroll(int dx, int dy);
        
        public void onScrollY(int y);
    }
}

这时候在webview的控制中就可以写了

webView.setOnScrollChangedCallback(new OnScrollChangedCallback() {
@Override
public void onScroll(int dx, int dy) {


}


@Override
public void onScrollY(int y) {
if (y > 200) {
if (title.getVisibility() != View.VISIBLE) {
title.setVisibility(View.VISIBLE);
img_source.setVisibility(View.VISIBLE);
}
} else {
if (title.getVisibility() == View.VISIBLE) {
title.setVisibility(View.GONE);
img_source.setVisibility(View.GONE);
}
}
Log.i("zst", "y=====" + y);
}
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值