您的位置:首页 > 移动开发

ScrollView内嵌套 WebView WebView 拦截滚动事件问题

2016-03-31 00:00 471 查看
问题描述:
为了满足文本描述样式多样性,支持富文本展示,想到了好快多省的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);
}
}

总结:
比较蛋疼的解决方式,目前还没有发现更好的方式,有更好的处理方式望伙伴们告知。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: