저는 LinearLayout에 webview 및 ViewPager가 있습니다. 내가 모두 웹보기와 ViewPager에 OnTouchListener 설정하는 동안Android : 뷰 페이지 터치 이벤트가 작동하지 않습니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/webview_wrapper"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" />
<android.support.v4.view.ViewPager
android:id="@+id/slide_page"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#696969"
android:focusable="true"
android:focusableInTouchMode="true"
android:visibility="gone" />
. 드래그를 할 때 webview에서 드래그를 시작하고 viewPager에 MotionEvent를 전달하려고합니다.
내 코드는 다음과 같습니다.
...
08-06 : 07 : 09 : 16.321 : 여기
WebView mainView = tab.getWebView();
mainView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent e) {
Log.w("LOGTAG", "onTouch");
switch (e.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
Log.w("LOGTAG", "ACTION_UP");
break;
case MotionEvent.ACTION_MOVE:
Log.w("LOGTAG", "ACTION_MOVE");
Test(...);
mPager.dispatchTouchEvent(e);
break;
case MotionEvent.ACTION_UP:
Log.w("LOGTAG", "ACTION_UP");
break;
}
return false;
}
});
private void Test(...) {
FrameLayout wrapper =
(FrameLayout) container.findViewById(R.id.webview_wrapper);
mPager = (ViewPager)container.findViewById(R.id.slide_page);
...
wrapper.setVisibility(View.GONE);
mPager.setVisibility(View.VISIBLE);
mPager.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent e) {
Log.w("LOGTAG", "mPager.onTouch");
switch (e.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
Log.w("LOGTAG", "mPager.ACTION_DOWN");
break;
case MotionEvent.ACTION_MOVE:
Log.w("LOGTAG", "mPager.ACTION_MOVE");
break;
case MotionEvent.ACTION_UP:
Log.w("LOGTAG", "mPager.ACTION_UP");
break;
}
return false;
}
});
}
내 로그입니다 W는/(26460)이 : mPager.dispatchTouchEvent (전자)가 true
을 = 08-06 07 : 09 : 16.321 : W/(26,460) onTouch
08-06 07 : 09 : 16.321 : W/(26,460) ACTION_MOVE
08-06 7시 9분 : 16.321 : W/(26,460) mPager.onTouch
08-06 07 : 09 : 16.321 : W/(26,460) mPager.ACTION_MOVE
...
는ViewPager onTouchListener 잘 검출 MotionEvent , 뷰 페이지는 움직이지 않았다.
도움이 될 것입니다.