ListView안에 ViewPager를 넣고 ViewPager 크기를 ListView크기랑 같게해서
하나의 아이템만보여지게 해두고 상하스크롤이 일어날때는 .smoothScrollToPosition()을 써서
다음 아이템 position에 딱맞게 이동해주고 싶은데
ListView의 onTouch에서 true를 리턴하고 GestureDetector에서 스크롤 판단으로 하려고하는데
ListView의 onTouch에서 true를 리턴해도 터치이벤트가 전달되어버리는건지 스크롤이 움직여버리네요.
스크롤 애니메이션은 안일어나는데 상하스크롤 position만 이동되어 버립니다.
설마 ListView에서 터치를 자식뷰에게 전달하지않는게 불가능한건가해서
따로 프로젝트를 만들어서 ViewPager는 넣지 않고 단순히 ListView만 만들어서 true를 리턴해보니
여기서는 터치를 안넘겨줘서 스크롤 position이 이동안되어 원하는데로 되던데
ViewPager만 넣으면 문제네요 ...
public class UninterceptableViewPager extends ViewPager{
public UninterceptableViewPager(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public UninterceptableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
Log.e(Tag, "UninterceptableViewPager onInterceptTouchEvent");
boolean ret = super.onInterceptTouchEvent(ev);
if(ret){
getParent().requestDisallowInterceptTouchEvent(true);
}
return ret;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
Log.e(Tag, "UninterceptableViewPager onTouchEvent");
boolean ret = super.onTouchEvent(ev);
if(ret){
getParent().requestDisallowInterceptTouchEvent(true);
}
return ret;
}
}
위 처럼 ViewPager를 커스텀해서 ListView와의 스크롤 충돌은 잡았는데요.
기본 ListView 스크롤처럼 조금씩 이동되는게 아니고
상하스크롤이 발생하면 item position에 딱딱 맞게 이동해주고 싶은데
참 어렵네요 ㅠㅠ 오늘 하루종일 이거만 잡고있었는데도...
같은 경험이 있으신분 계시면 조언좀 부탁드립니다...
키워드만 던저주셔도 감사히 듣겠습니다.