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

例:

原布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="148px"
 android:gravity="center_vertical"
 android:orientation="horizontal"
 android:paddingLeft="50px"
 android:paddingRight="50px">

<TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content" 
android:text="名称" android:textSize="44px" />

 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_marginRight="50px"
 android:layout_weight="1"
 android:drawablePadding="50px"
 android:drawableRight="@drawable/ic_crumb"
 android:gravity="right"
 android:text=""
 android:textSize="44px" />
</LinearLayout>


修改为:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="148px"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:paddingLeft="50px"
    android:paddingRight="50px">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="名称"
        android:textSize="44px" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="50px"
        android:layout_weight="1"
        android:drawablePadding="50px"
        android:drawableRight="@drawable/ic_crumb"
        android:gravity="right"
        android:text=""
        android:textSize="44px" />
</LinearLayout>

</LinearLayout>

 
 

 
 
 
 

 
 


猜你喜欢

转载自blog.csdn.net/xxfen_/article/details/79642177
今日推荐