Android

ListView(리스트뷰) 자동 높이, 크기 조절

최데브 2021. 3. 29. 18:01

리스트뷰안에 들어간 데이터의 수 만큼 자동으로 높이를 조절해주는 코드.

public static void setListViewHeightBasedOnChildren(ListView listView) {

        ListAdapter listAdapter = listView.getAdapter();

        if (listAdapter == null) {

            // pre-condition

            return;

        }



        int totalHeight = 0;

         

        int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);

        for (int i = 0; i < listAdapter.getCount(); i++) {

            View listItem = listAdapter.getView(i, null, listView);

            //listItem.measure(0, 0);

            listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);

            totalHeight += listItem.getMeasuredHeight();           

        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();

         

        params.height = totalHeight;

        listView.setLayoutParams(params);

         

        listView.requestLayout();

    }
반응형