我在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。
答案 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.
}
});