Why do ListView items not grow to wrap their content?

前端 未结 9 683
猫巷女王i
猫巷女王i 2020-11-30 20:26

I have a rather complex ListView, with variable list item heights. Under certain conditions, I need to display an additional view in a list item, which is hidden by default

9条回答
  •  一整个雨季
    2020-11-30 21:03

    Try this: http://www.java2s.com/Code/Android/UI/setListViewHeightBasedOnChildren.htm

    public class Utils {
    
        public static void setListViewHeightBasedOnChildren(ListView listView) {
            ListAdapter listAdapter = listView.getAdapter(); 
            if (listAdapter == null) {
                // pre-condition
                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();
        }     
    }
    

提交回复
热议问题