마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ListView안에 ViewPager넣기 스크롤 질문드립니다.

0 추천

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에 딱딱 맞게 이동해주고 싶은데 

참 어렵네요 ㅠㅠ 오늘 하루종일 이거만 잡고있었는데도...

같은 경험이 있으신분 계시면 조언좀 부탁드립니다...

키워드만 던저주셔도 감사히 듣겠습니다.

 

 

 

얼룩돼지 (15,720 포인트) 님이 2013년 9월 26일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...