1

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

现在,如果我尝试在 webview 内滚动,scrollview 会拦截 touchevent 并滚动整个 webview,而不是只移动小的可滚动 div。

仅当 webview 不想滚动时,如何才能使滚动视图工作?

4

4 回答 4

0

@Janusz,我遇到了同样的问题。我的解决方案是基于扩展的滚动视图行为以及正确的布局。我在这里写了同一个问题的答案。如果您有实施问题或疑问,请告诉我,请告知是否有帮助:)

于 2012-10-19T02:23:50.510 回答
0

就我而言,我在滚动视图容器中有一个 webview,并且滚动视图和 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;
        }
   }
于 2014-03-28T21:39:01.343 回答
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"
                 />
于 2018-01-24T06:06:36.443 回答
-1

我们的解决方案通过Javascript 接口使用 Javascript 回调。每次触摸 WebView 内可滚动的 UI 的一部分时,都会通过 java 脚本调用一个侦听器,该侦听器在 WebViews 父级上调用requestDisallowInterceptTouchEvent

这不是最优的,而是目前找到的最好的解决方案。如果用户滚动得非常快,则 WebView 中的图层将不会滚动,但以正常的滚动速率可以正常工作。

于 2012-10-26T06:58:37.883 回答