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

LIstView안에 HorizontalScrollView 사용하려면?

0 추천

안녕하세요

위와 같이 레이아웃을 구성했습니다.

(리스트뷰 안에 HorizontalScrollView가 들어가고 그 안에 각각 이미지뷰가 들어 갑니다.

HorizontalScrollView안에 이미지뷰의 갯수는 각각 다릅니다.)

몇가지 문제점이 발생했는데요.

getView()에서 스크롤뷰를 inflater 해서 그안에 동적으로 이미지뷰를 붙여줍니다.

여기서 약간 끈김이 발생을 합니다.

그리고 1행에서 좌우로 스크롤후 리스트뷰를 아래로 내렸다가 다시 1행이 보여지게 할경우

위에서 언급한 끈김과 함께 좌우 스크롤로 움직였던 그대로 보여지지 않습니다.

어떻게 방법이 없을까요?

아니면 리스트뷰와 HorizontalScrollView가 아닌 다른 방법으로 구성이 가능한지

조언 부탁드립니다.

 

 

등가교환 (1,110 포인트) 님이 2013년 3월 21일 질문

2개의 답변

0 추천
lisview 에 inflate 할 layout 을 만들때 scrollview 를 상위에 넣고 하면 되지 않을 까요?

<ListView>

 

Adapter -> inflate -> layout

layout

<ScrollView> <etc...></ScrollView>
aucd29 (218,390 포인트) 님이 2013년 3월 22일 답변
소중한 답변 감사합니다.^^
0 추천

getView()는 안보여지던 아이템이 다시 보여질때 아이템을 재생성하는 부분입니다.

 

재생성되더라도 마지막스크롤했던위치에서 다시 시작되게 하려면 

data 객체에 스크롤 좌표 저장하는 변수를 하나더 만들고

HorizontalScrollView의 computeScroll() 등의 메소드등을 오버라이딩해서

스크롤이 끝나는 시점에서 스크롤 좌표를 아까 만들어두었던 변수에저장하고

 

getView()에서 아이템이 재생성될때 변수에 저장했던 스크롤 좌표로 스크롤을 이동해주면 될것같습니다.

 

얼룩돼지 (15,720 포인트) 님이 2013년 3월 22일 답변
소중한 답변 감사합니다.
그런데 말씀하신 방법은 스크롤뷰를 커스텀화 해서 computeScroll()를 오버라이딩 해서 사용을 하라는 말씀이신가요?
단순한 구조의 xml이라면 말씀하신 방법을 찾아서 하면 될것 같은데요.
리스트뷰안에 getView()에서 1차로 스크롤뷰가 있는 xml을 인플레이트 하고 그안에서 for문을 돌려 이미지뷰를 붙여주는 형태라 어떻게 사용을 해야 될지 감이 떠오르지 않습니다.
좀더 조언좀 부탁드립니다.
...