我有一个嵌入在scrollview中的Webview。 Webview本身具有可垂直滚动的区域。
现在,如果我尝试在webview中滚动,则scrollview会截取touchevent并滚动整个webview,而只移动小的可滚动div。
如果webview不想滚动,如何才能使scrollview工作?
答案 0 :(得分:0)
@Janusz,我遇到了同样的问题。我的解决方案基于扩展滚动视图行为以及正确的布局。我已经写了同一个问题的答案here。 如果您遇到实施问题或问题,请告知我们,请告知是否有帮助:)
答案 1 :(得分:0)
就我而言,我在scrollview容器中有一个webview,并且scrollview和webview是全屏的。我能够通过覆盖webView touchListener中的onTouch事件来解决这个问题。
scrollView = (ScrollView)findViewById(R.id.scrollview);
webView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
scrollView.requestDisallowInterceptTouchEvent(true);
return false;
}
}
答案 2 :(得分:0)
使用TouchyWebView.java
public class TouchyWebView extends WebView {
public TouchyWebView(Context context) {
super(context);
}
public TouchyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public TouchyWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onTouchEvent(MotionEvent event){
requestDisallowInterceptTouchEvent(true);
return super.onTouchEvent(event);
}
}
在布局文件中:
<yourclasapath.TouchyWebView
android:id="@+id/description_web"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
答案 3 :(得分:-1)
我们的解决方案通过Javascript Interface使用Javascript回调。每次触摸WebView中可滚动的UI的一部分时,都会通过java脚本调用侦听器,并且此侦听器在WebViews父级上调用requestDisallowInterceptTouchEvent。
这不是最佳选择,但目前最好的解决方案。如果用户滚动得非常快,WebView中的图层不会滚动,但滚动速度正常。它可以正常工作。