请不要在不理解的情况下将此问题标记为重复。
我已经查看了所有可用的答案,但没有一个能够解决我的问题。
场景:我必须在点击时添加具有展开和折叠功能的部分,这些部分根据API响应是动态的。所以我采用了具有以下树结构的xml文件。
main.xml中
LinearLayout-> ScrollView->的LinearLayout
现在我按照响应在此线性布局中添加自定义xml设计文件,此响应还包含每个部分中的问题数。 因此,为了管理问题,我在自定义xml文件中使用了listview。现在我必须以完整的高度显示每个列表视图,因此只有顶部滚动才能在部分内部进行任何滚动。
我已使用常用方法名称 setListViewHeightBasedOnChildren 检查了一些答案,但由于listview动态添加了运行时间,因此无效。
所以请帮助我。
答案 0 :(得分:2)
由于子列表的数量是动态的,因此最好通过库
您只需添加一个适配器来维护子列表。它也很容易定制。
答案 1 :(得分:1)
我已经这样做了,试试这个:
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}