티스토리 뷰
<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(0, 0); 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