问题描述:
为了满足文本描述样式多样性,支持富文本展示,想到了好快多省的WebView,
该区域位于ScrollView中,但是当滑动到WebView中,滑动就不再会起作用。解决思路:
自定义继承WebView,监听滚动,拿到滚动距离,在回调中将滚动距离作用到外层的scrollview上。具体实现:
自定义PowerWebView:
import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;public class PowerWebView extends WebView {
private OnScrollChangedCallback mOnScrollChangedCallback; public PowerWebView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // TODO Auto-generated constructor stub } public PowerWebView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub } public PowerWebView(Context context) { super(context); // TODO Auto-generated constructor stub } public void setOnScrollChangedCallback( final OnScrollChangedCallback onScrollChangedCallback) { mOnScrollChangedCallback = onScrollChangedCallback; } public static interface OnScrollChangedCallback { public void onScroll(int deltaY); } @Override public boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) { if (mOnScrollChangedCallback != null) { mOnScrollChangedCallback.onScroll(deltaY); } return true; }
}
调用伪代码
public class XXFragment extends Fragment implements OnScrollChangedCallback{
…
productWebView.setOnScrollChangedCallback(this);
…@Override public void onScroll(int deltaY) { // TODO Auto-generated method stub int y = s_view.getScrollY()+deltaY; s_view.smoothScrollTo(0, y); }
}
总结:
比较蛋疼的解决方式,目前还没有发现更好的方式,有更好的处理方式望伙伴们告知。
ScrollView内嵌套 WebView WebView 拦截滚动事件问题
最新推荐文章于 2022-11-09 15:48:32 发布