有效的解决ListView宽度设置为wrap_content还是占满整行的问题

代码如下:前提是lsitview已经添加了item,要不然listAdapter.getCount()会返回负值


public  void  setListViewBasedOnChildren(ListView listView) {
         ListAdapter listAdapter = listView.getAdapter();  
         if  (listAdapter ==  null ) {
         // pre-condition 
             return
        
         int  totalHeight =  0
         int  maxWidth =  0 ;
         for  ( int  i =  0 ; i < listAdapter.getCount(); i++) { 
             View listItem = listAdapter.getView(i,  null , listView); 
             listItem.measure( 0 0 ); 
             totalHeight += listItem.getMeasuredHeight(); 
             int  width = listItem.getMeasuredWidth();
             if (width>maxWidth)maxWidth = width;
        
   
         ViewGroup.LayoutParams params = listView.getLayoutParams(); 
         params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() -  1 ));
         params.width = maxWidth;
         listView.setLayoutParams(params); 
     }

你可能感兴趣的:(有效的解决ListView宽度设置为wrap_content还是占满整行的问题)