티스토리 뷰

<ScrollView>

     .....

     .....

     <ListView />

</ScrollView>


스크롤뷰 안에 리스트뷰를 위치하면 화면에 보이지 않는다.

ListView의 속성인 

android:layout_height="wrap_content"를 하면 하나의 아이템만 보이고, android:layout_height="match_parent"를 하면 아예 보이지 않는다.


본인은 인터넷을 돌아다니다 보면 여러가지 방법이 나오는데 그 중에서

리스트뷰의 높이를 재설정해서 다시 그려주는 방법으로 해결했다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void setListViewSize(ListView myListView) {
        ListAdapter myListAdapter = myListView.getAdapter();
        if (myListAdapter == null) {
            return;
        }
        
        int totalHeight = 0;
        for (int size = 0; size < myListAdapter.getCount(); size++) {
            View listItem = myListAdapter.getView(size, null, myListView);
            listItem.measure(00);
            totalHeight += listItem.getMeasuredHeight();
        }
       
        ViewGroup.LayoutParams params = myListView.getLayoutParams();
        params.height = totalHeight + (myListView.getDividerHeight() * (myListAdapter.getCount() - 1));
        myListView.setLayoutParams(params);
       
}
cs

이 메서드는 이미 리스트뷰에 setAdapter된 adapter의 getView메서드를 호출해서 높이를 다시 설정하고 있다.



호출 할 때는 listView.setAdapter(adapter); 먼저 호출한 뒤에 dapter.setListViewSize(...)를 호출하면 된다.

Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday