안드로이드 개발 질문/답변
(글 수 45,052)
ListView의 각 item(셀)의 높이가 다른데요.. 해당 셀을 덥을 수 있는 View를 만들려면 어떻게 해야 할까요?
각셀의 View의 크기가 다르다 보니 덥을려는 View의 크기를 정할 수가 없더라구요.
ListView의 셀의 높이를 읽어 올려고 하니 flicking될 때 높이를 재대로 읽어지지가 않더라구요..
그렇다고 ListVew 자체를 덥어 버리면 않되서요..
방법이 아니라 꼼수라도.. 아니면 아이디어라도..
고수님들의 조언을 부탁 드립니다.
2010.05.11 22:27:25
1. Custom Adapter와 LayoutInflater를 사용하여 리스트뷰를 작성합니다.
2. 리스트뷰의 각 아이템의 Layout은 FrameLayout을 사용합니다.
3. Custom Adapter에 원하는 item의 hidden flag를 설정하고, setDataChangeNotifi...를 호출합니다.
3. Custom Adapter에 getView가 재호출되는데, 3번에 설정된 hidden flag를 판단해서 Custom View의 자식 뷰들을 표시해줍니다.
2010.05.12 10:54:25
1번 View를 동적으로 크기가 정해지는 View라고 하고 2번 View를 1번 View를 덥을 View라고 할 때,
FrameLayout을 사용하더라도 1번 View의 크기가 1번 View안에 있는 내용의 크기에 따라 1번 View의 크기가 동적으로 변하게 되다 보니 1번 View를 덥는 2번 View를 만들 수가 없습니다.
xml은 위와 같이 설정하였습니다. 혹시 다르게 설정해야 2번 View가 1번 View를 덥을 수 있을까요?
FrameLayout을 사용하더라도 1번 View의 크기가 1번 View안에 있는 내용의 크기에 따라 1번 View의 크기가 동적으로 변하게 되다 보니 1번 View를 덥는 2번 View를 만들 수가 없습니다.
<RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout <- 1번 View <ImageView <TextView /LinearLayout> <ImageView <- 2번 view android:layout_width="fill_parent" android:layout_height="fill_parent" />
xml은 위와 같이 설정하였습니다. 혹시 다르게 설정해야 2번 View가 1번 View를 덥을 수 있을까요?
2010.05.12 11:18:03
리스트뷰에서 자식 뷰들의 배치가 끝나는 시점을 알수 있는 방법은 있습니다.
리스트를 상속받은 뷰를 만드시고,
@Override
protected void layoutChildren();
를 override 하고, 그 내부에서 super 호출을 해주면, 그 때가 바로 자식뷰들 재배치가 끝난 시점이므로, 뭔가.. 원하시는 작업을 하시면 될껍니다.
(리스트가 아닌 다른 뷰였다면, onLayout 을 override 하면 되는데, list 의 경우에는 이렇게 하지요 ^^)
리스트를 상속받은 뷰를 만드시고,
@Override
protected void layoutChildren();
를 override 하고, 그 내부에서 super 호출을 해주면, 그 때가 바로 자식뷰들 재배치가 끝난 시점이므로, 뭔가.. 원하시는 작업을 하시면 될껍니다.
(리스트가 아닌 다른 뷰였다면, onLayout 을 override 하면 되는데, list 의 경우에는 이렇게 하지요 ^^)