listview高度显示不全处理

listview显示不全场景:

1、listview(scrollview...)嵌套listview,里面listview 高度显示不全

2、动态改变listview的item布局,listview 高度显示不全


处理:

在listview添加适配器后,动态计算listview高度并设置高度。

方法如下:

/**
 * 动态设置listview的高度
 *
 * @param listView
 * @param h
 */
public static void setListViewHeightBasedOnChildren(ListView listView) {

    // 获取ListView对应的Adapter

    ListAdapter listAdapter = listView.getAdapter();

    if (listAdapter == null) {
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = 0;
        listView.setLayoutParams(params);
        return;
    }

    int totalHeight = 0;

    for (int i = 0; i < listAdapter.getCount(); i++) { // listAdapter.getCount()返回数据项的数目

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

        listItem.measure(0, 0); // 计算子项View 的宽高

        totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度

    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();

    params.height = totalHeight
            + (listView.getDividerHeight() * (listAdapter.getCount() - 1))
            + listView.getPaddingBottom() + listView.getPaddingTop();

    // listView.getDividerHeight()获取子项间分隔符占用的高度

    // params.height最后得到整个ListView完整显示需要的高度

    listView.setLayoutParams(params);

}


如果上面仍不能解决,请检查listview的item布局:

最外层控件高度必须设置为 自适应(wrap_content)或 填充(match_parent

例:

原布局:





 


修改为:



 

    

    



 
  

 
  
 
  

 
  


你可能感兴趣的:(笔记,bug解决)