(Android) ScrollView 안에 ListView 쓰면 Height안먹히는 현상 처리방법
아래 소스를 호출해주면 된다
public void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; }
int totalHeight = 0; int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(), View.MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED); totalHeight += listItem.getMeasuredHeight(); }
ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); listView.requestLayout(); } |
위 소스는 반드시 데이터가 모두 추가 된 후 호출해주어야 한다.
방식이 ListView에 child를 가져와서 Height를 주는방식인데, child가 추가되기 전에 호출하면 무용지물!
setListViewHeightBasedOnChildren(list);