반응형
ViewPager안에 WebView안에 ViewPager
뷰페이저 안에 웹뷰 터치 중복
[액티비티 뷰페이저] 안에 [프래그먼트]들 안에 [웹뷰]안에 [배너 페이저]가 있는데
[액티비티 뷰페이저]와 [웹뷰 뷰페이저]가 터치가 중복되는 문제가 생김.
ViewPager 내부, webView 가 있는 경우, inApp 에 swipe 아이템 이 있는 경우의 이벤트 처리
- onTouchEvent(ACTION_DOWN) 에서 viewPager 의 paging 을 비활성화 처리
- onOverScrolled (inApp에서 swipe 처리 하지 않는 경우 호출됨) 에서 paging 을 다시 활성화 처리
뷰페이저 컨트롤러 클래스 생성
public interface ViewPagerController {
void setPagingEnabled(boolean isEnable);
}
액티비티
@Override
public void setPagingEnabled(boolean isEnable) {
if (viewPager != null) {
viewPager.setPagingEnabled(isEnable);
}
}
//프래그먼트 생성하는곳
if (fragment != null) {
fragment.setViewPagerController(this);
}
웹뷰
private ViewPagerController viewPagerController;
//onTouchListener
case MotionEvent.ACTION_DOWN:
returnValue = super.onTouchEvent(event);
mLastY = eventY;
// start NestedScroll
startNestedScroll(ViewCompat.SCROLL_AXIS_VERTICAL);
if (viewPagerController != null) {
viewPagerController.setPagingEnabled(false);
}
break;
@Override
protected void onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) {
ExLog.v(TAG, "onOverScrolled");
if (viewPagerController != null) {
// ViewPager 내부, webView 가 있는 경우, inApp 에 swipe 아이템 이 있는 경우의 이벤트 처리
// onTouchEvent(ACTION_DOWN) 에서 viewPager 의 paging 을 비활성화 하고
// onOverScrolled (inApp에서 swipe 처리 하지 않는 경우 호출됨) 에서 paging 을 다시 활성화
viewPagerController.setPagingEnabled(true);
}
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY);
}
public void setViewPagerController(ViewPagerController viewPagerController) {
this.viewPagerController = viewPagerController;
}
BaseFragment
protected ViewPagerController viewPagerController;
public final void setViewPagerController(@Nullable ViewPagerController viewPagerController) {
this.viewPagerController = viewPagerController;
}
중복되던 프래그먼트
binding.webView.setViewPagerController(viewPagerController);
참조 :
팀장 제이씨의 PR에서 보고 나중에 나도 겪을수 있을 것 같아서 남겨두었습니다.
반응형
'안드로이드 > Android View' 카테고리의 다른 글
스크롤 중복시 or 터치 우선순위 관리 (0) | 2022.11.09 |
---|---|
리싸이클러뷰 기초 (0) | 2022.11.04 |
[Android] DrawerLayout 숨겨있다가 액션 취하면 나타나는 기능 (0) | 2022.11.04 |
[Android] Coordinatorlayout에 대해 알아보자 (0) | 2022.11.04 |
[Android] Elevation (그림자 효과) (0) | 2022.10.27 |