티스토리 뷰
Android ViewPager 내부 View에 클릭 이벤트가 있을 경우 해당 View 페이징이 안되는 증상.
DevSSAM 2018. 11. 16. 16:31안드로이드에서 ViewPager는 흔히 쓰는 뷰 컴포넌트이다.
보통 페이저 내부에는 플레이그먼트나 리스트뷰 혹은 리사이클러뷰가 들어가기 때문에,
잘 몰랐던 증상이 발생했다.
내부 아이템 뷰에 클릭 리스너를 등록하면, 해당 뷰 플링 동작이 불가능하다 OTL....
안드로이드 터치 이벤트는 리턴에 따라 부모 -> 자식 혹은 자식 -> 부모로 이벤트가 넘어가지 않도록 할 수 있는데,
이게 굉장히 헷갈려서 삽질을 했다.
다음에도 같은 삽질을 하지 않기 위해 미리 남겨 놓자!
private GestureDetector gestureDetector = null;
gestureDetector = new GestureDetector( mContext, new SingleTapGestureListener() );
요렇게 선언되어 있는 변수를
해당 뷰의 터치 이벤트 리스너에 적용해준다.
clickEventView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
gestureDetector.onTouchEvent(event);
return true;
}
});
SigleTapGestureListener 클래스는 아래와 같다.
private final class SingleTapGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
try {
if( velocityX < 0 ) {
// 뷰페이저 오른쪽으로 이동}else {
// 뷰페이저 왼쪽으로 이동
}
}catch ( Exception e ) {}
return true;
}
@Override
public boolean onSingleTapUp(MotionEvent event) {
try {
// 클릭 리스너 동작
}catch ( Exception e ) {}
return true;
}
}
이 외의 터치 이벤트로 SimpleOnGestureListener 안에 함수를 참고해서 Override 해서 쓰면 된당! ^^
'Android Memo' 카테고리의 다른 글
반복문으로 문자열을 합칠 때 생기는 Warning 관련... (0) | 2019.01.17 |
---|---|
Glide 모듈을 사용 한 비동기 이미지를 포함하는 노티피케이션 띄우기 (0) | 2018.12.07 |
안드로이드 Sol Prime 단말 fontFamily 설정 오류 (0) | 2018.11.06 |
Android Dialog Show 할때 Animation 적용하기 (0) | 2018.10.24 |
Android AnimationDrawable OneShot 옵션 시 Finish 타이밍 캐치하기 (0) | 2018.10.24 |
- Total
- Today
- Yesterday
- Android Custom Dialog
- fontFamily
- android o
- AnimationDrawable
- notification
- targetSdkVersion 31
- ViewPager
- FrameAnimation
- String append
- buildToolsVersion 31.0.0
- 문자열
- Android 더블 클릭
- glide
- startForegroundService
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |