2016년 9월 19일 월요일

[안드로이드] 스크롤뷰 안 쪽 리스트뷰 높이 설정하기



ScrollView와 ListView를 병행해서 사용할 경우 ListView의 크기가 원하는 데로 잘 안될 때가 있습니다. ListView 내 각각의 Item들의 높이를 계산해서 다시 세팅 해 주는 방식으로 해결 할 수 있습니다. 아래 코드는 구글링으로 참고한 게시물의 코드가 잘 동작하지 않아 조금 수정한 버전입니다.


    public static void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            return;
        }
        int totalHeight = 0;
        for (int i = 0; i < listAdapter.getCount(); i++) {
            View listItem = listAdapter.getView(i, null, listView);
            listItem.measure(0,0);
            totalHeight += listItem.getMeasuredHeight();
        }
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        listView.setLayoutParams(params);
        listView.requestLayout();
    }

사용예제

ListView listView = (ListView) v.findViewById(R.id.searchList);
listView.setAdapter(adapter);
setListViewHeightBasedOnChildren(listView);


댓글 없음:

댓글 쓰기