我的片段中有webview,并且在滑动webview时,viewViewr也开始滑动

时间:2019-06-25 12:15:58

标签: android android-fragments webview android-viewpager

我在Web视图中打开了Stack Overflow的解决方案,因此该页面的移动版本在Web视图中打开。现在有一个代码需要水平滚动才能完全查看它。当我开始滚动时,我的Web视图也开始滚动。结果,不会在网页上滚动,而会发生viewPager滚动。

我尝试了此操作,但是当我执行此操作时,我的刷卡功能完全被禁用。 How do disable paging by swiping with finger in ViewPager but still be able to swipe programmatically? 我不知道该怎么实现。

<LinearLayout android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:focusable="true"
    android:focusableInTouchMode="true"
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <LinearLayout
        android:id="@+id/urlBoxId"
        android:background="@color/colorPrimaryDark"
        android:elevation="4dp"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/editTextId"
            android:layout_marginHorizontal="3dp"
            android:background="@drawable/rectangle"
            android:paddingHorizontal="10dp"
            android:paddingVertical="8.5dp"
            android:textColor="#fff"
            android:hint="EnterUrl"
            android:inputType="textUri"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="6"/>
    </LinearLayout>
    <WebView
        android:id="@+id/webViewId"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
</LinearLayout>

这是我的片段布局。我在webview上方有一个linearlayout。我想在webview上滑动时禁用viewPager滑动,但是在linearLayout上滑动时却能够滑动片段。

我刚接触Android。

1 个答案:

答案 0 :(得分:0)

所以我重写了webView的setOnTouchListener中的onTouch方法。

// to access the parent activity
ViewPager vpager = getActivity().findViewById(R.id.myViewPager); 

webView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

              if(event.getAction()==MotionEvent.ACTION_DOWN || 
                        event.getAction()==MotionEvent.ACTION_POINTER_DOWN){
                    vpager.requestDisallowInterceptTouchEvent(true);

              }else if(event.getAction()==MotionEvent.ACTION_UP ||
                        event.getAction()==MotionEvent.ACTION_POINTER_UP){
                    vpager.requestDisallowInterceptTouchEvent(false);

                }

                return false; // set it false for your webview to scroll correctly.
            }
        });