美文网首页Android 开发收集的一些东西
ScrollView嵌套ListView只显示一行的解决方法

ScrollView嵌套ListView只显示一行的解决方法

作者: a木槿_ | 来源:发表于2019-01-18 14:06 被阅读0次
        // 获取ListView对应的Adapter
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            return;
        }

        int totalHeight = 0;
        for (int i = 0, len = listAdapter.getCount(); i < len; i++) {
            // listAdapter.getCount()返回数据项的数目
            View listItem = listAdapter.getView(i, null, listView);
            // 计算子项View 的宽高
            listItem.measure(0, 0);
            // 统计所有子项的总高度
            totalHeight += listItem.getMeasuredHeight();
        }

        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
        // listView.getDividerHeight()获取子项间分隔符占用的高度
        // params.height最后得到整个ListView完整显示需要的高度
        listView.setLayoutParams(params);
    ```
使用方法就是在 ListView 设置了 Adapter 适配器后调用该方法。

ListView lv = (ListView) findViewById(R.id.lvTest);
lv.setAdapter(adapter);
setListViewHeightBasedOnChildren(lv);//这里

相关文章

网友评论

    本文标题:ScrollView嵌套ListView只显示一行的解决方法

    本文链接:https://www.haomeiwen.com/subject/vkrndqtx.html