如何在运行时获得准确的ListView高度?

Den*_*gin 1 height android listview android-listview

我需要在运行时获得准确的listView高度.

当我使用下面的代码时,每个listItem的高度不正确.

            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();
            }
            params.height = totalHeight + listview.getDividerHeight()* (listAdapter.getCount() -1);
            listview.setLayoutParams(params);
            listview.requestLayout();
Run Code Online (Sandbox Code Playgroud)

当我使用getChild版本时,高度准确但总计数已关闭...

        int total = 0;
        for (int i = 0; i < listview.getChildCount(); i++) {
            View childAt = listview.getChildAt(i);
            if (childAt == null)
                continue;

            int childH = childAt.getMeasuredHeight();
            total += childH;
        }
        int div = listview.getDividerHeight();
        total += (div * (listAdapter.getCount() - 1));

        if (params.height != total) {
            getLogger().info("setting measured buttons list to height: " + total);
            params.height = total;
            listview.requestLayout();
            ViewParent parent = listview.getParent();
Run Code Online (Sandbox Code Playgroud)

你遇到过这个问题吗?

Apo*_*orv 9

如果你只是想找到listView你可以使用的高度

listView.post(new Runnable()
{
    public void run()
    {
        listView.getHeight();
    }
});
Run Code Online (Sandbox Code Playgroud)