如何在Scrollview内的Webview中进行垂直滚动?

时间:2012-06-21 13:03:41

标签: android webview scrollview touch-event

我有一个嵌入在scrollview中的Webview。 Webview本身具有可垂直滚动的区域。

现在,如果我尝试在webview中滚动,则scrollview会截取touchevent并滚动整个webview,而只移动小的可滚动div。

如果webview不想滚动,如何才能使scrollview工作?

4 个答案:

答案 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中的图层不会滚动,但滚动速度正常。它可以正常工作。