gpt4 book ai didi

android - 如何在不折叠的情况下将 ListView 放入 ScrollView?

转载 作者:IT老高 更新时间:2023-10-28 12:49:44 26 4
gpt4 key购买 nike

我四处寻找这个问题的解决方案,我能找到的唯一答案似乎是“don't put a ListView into a ScrollView”。不过,我还没有看到任何关于 why 的真正解释。我似乎能找到的唯一原因是谷歌认为你不应该这样做。好吧,我做到了,所以我做到了。

所以问题是,如何将 ListView 放入 ScrollView 而不使其折叠到最小高度?

最佳答案

这是我的解决方案。我对 Android 平台还很陌生,我敢肯定这有点 hackish,尤其是在关于直接调用 .measure 和直接设置 LayoutParams.height 属性的部分,但它可以工作.

您所要做的就是调用 Utility.setListViewHeightBasedOnChildren(yourListView),它将调整大小以完全适应其项目的高度。

public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}

int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom();

for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
if (listItem instanceof ViewGroup) {
listItem.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}

listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}

ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
}

关于android - 如何在不折叠的情况下将 ListView 放入 ScrollView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3495890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com