如何计算android中不同高度listitem的listview高度?

如何计算android中不同高度listitem的listview高度?,android,listview,android-listview,Android,Listview,Android Listview,此代码有效,但问题出在ListView中,ListView的每个项都不同,因此不会显示ListView的最后一项,因为高度较大的ListView项会占用此空间。 下面是代码: public static void setListViewHeightBasedOnChildren(ListView listView,DownloadAdapter adapter,LinearLayout layDownloads) { ListAdapter mAdapter = adapter; i

此代码有效,但问题出在ListView中,ListView的每个项都不同,因此不会显示ListView的最后一项,因为高度较大的ListView项会占用此空间。

下面是代码:

public static void setListViewHeightBasedOnChildren(ListView listView,DownloadAdapter adapter,LinearLayout layDownloads) {

ListAdapter mAdapter = adapter;

    int totalHeight = 0,h=0;
    int listWidth=listView.getMeasuredWidth();

    for (int i = 0; i < mAdapter.getCount(); i++) {
        View mView = mAdapter.getView(i, null, listView);

    mView.measure(
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        h=mView.getMeasuredHeight();
        totalHeight += mView.getMeasuredHeight();

    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight
            + (listView.getDividerHeight() * (mAdapter.getCount() - 1))+h;
    listView.setLayoutParams(params);
    listView.requestLayout();
public static void setListViewHeightBasedOnChildren(ListView ListView、DownloadAdapter适配器、LinearLayout layDownloads){
ListAdapter mAdapter=适配器;
int totalHeight=0,h=0;
int listWidth=listView.getMeasuredWidth();
对于(int i=0;i
}

这是屏幕

请帮助我如何获得每个单元格的listview高度以及如何计算listview的高度? 提前感谢。ANS 用这个

mView.measure(MeasureSpec.makeMeasureSpec(listWidth,MeasureSpec.justice),MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspect))

在你的代码上


mView.measure(MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspected),MeasureSpec.makeMeasureSpec(0,MeasureSpec.unspected))

您的函数替换为

public static void getTotalHeightofListView(ListView listView) {

    ListAdapter mAdapter = listView.getAdapter();

    int totalHeight = 0;
    int listWidth = listView.getMeasuredWidth();

    for (int i = 0; i < mAdapter.getCount(); i++) {
        View mView = mAdapter.getView(i, null, listView);

        mView.measure(MeasureSpec.makeMeasureSpec(listWidth, MeasureSpec.EXACTLY),
                MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

        totalHeight += mView.getMeasuredHeight();
        Log.w("HEIGHT" + i, String.valueOf(totalHeight));

    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight
            + (listView.getDividerHeight() * (mAdapter.getCount() - 1));
    listView.setLayoutParams(params);
    listView.requestLayout();
}
公共静态void getTotalHeightoListView(ListView ListView){
ListAdapter mAdapter=listView.getAdapter();
int totalHeight=0;
int listWidth=listView.getMeasuredWidth();
对于(int i=0;i
您可以在scroll view中使用listview向下滚动并查看所有项目我的listview在scroll view中显示的是,在我的屏幕上有3个线性布局,每个都有不同的listview,这就是为什么我必须动态设置每个listview高度的原因,因此,我使用此方法设置listview的高度。为什么不考虑此解决方案:使您的项目与显示摘要的默认大小相同,然后单击,展开特定项目?否,我不会显示整个列表行。请尝试再次从(listWidth,MeasureSpec.确切地说)替换此给定代码(0,MeasureSpec.未指定)它给0高度的listview行张贴您的完整代码,并采取再次更改代码,它在我的作品工作良好,像一个魅力为我!(我在cardview中有一个listview)