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

GridView에 스크롤 이벤트 리스너가 작동하지 않아요..

0 추천
지금 액티비티 안에 프레그먼트가 있고, 프레그먼트에 그리드뷰가, 메인 액티비티에는 탭이 있습니다.

그리드뷰를 스크롤 할 때 메인 액티비티의 탭을 이동시켜줘야되서..

 

MainActivity에서 onTouchEvent를 구현해 줬구요.

프레그먼트의 그리드 뷰에 onTouchEventListener를 달아줬어요.

그리고 스크롤 문제로 OnScrollListener도 달아줬구요.

 

그런데 문제가 생겼습니다.

처음에는 문제가 없었는데 그 다음부터는 onScroll이 호출은 되는데 스크롤이 되지가 않아서요..

 

로그를 찍어보니까 순서는 대충 (그리드뷰 터치->메인액티비티 터치->그리드뷰 터치->그리드뷰 스크롤) 이렇게 흘러가는 것 같습니다..

 

 

스크롤리스너는 동작하는데 스크롤이 안될수도..있나요?

가장 바깥쪽에 있는 레이아웃이 SwipeRefreshLayout이라서 setEnabled(false)로 새로고침을 막고 있는데 이게 관계되어 있는걸까요..?

 

초보라서 ㅜㅜ 어떻게 해야할 지 모르겠네요. 이걸로 이틀째 같은 거 계속 적고 있어서 답답합니다. ㅜㅜ
relz (2,550 포인트) 님이 2015년 6월 1일 질문

1개의 답변

0 추천
어떤 것을 구현하시려는 지 모르겠지만

굳이 스크롤리스너와 터치이벤트를 구현하지 않아도 될 것 같습니다.

viewpager와 viewpager어댑터로

좌우 스와이핑 탭 이동을 구현할 수 있고

그리드뷰에 상하로 스크롤이 필요한 것이라면

스크롤뷰로 덮으면 됩니다.

따로 스크롤리스너와 터치이벤트를 사용해야하는 이유가 있나요?

SwipeRefreshLayout도 새로고침을 사용하지 않는데 따로 사용하시는 이유가 있는지요?
파닭칡힌 (1,820 포인트) 님이 2015년 6월 1일 답변
그리드 뷰를 사용하고 있는데 이 그리드 뷰와 스크롤 뷰를 함께 쓰지 못해서요.. (오픈 소스 라이브러리 사용하고 있습니다.) SwipeRefreshLayout의 경우 현재 스크롤 위치에 상관없이 위에서 아래로 터치를 하면 무조건 새로고침이 되서 그걸 막으려구 하는거였구요.

애니메이션을 처음에 LayoutParams의 margin값을 조절해서 이동하려고 하니 너무 버벅여서 ObjectAnimator써서 이동했구요..
...