设置列表视图的动态高度,该视图在android中以编程方式添加
未经理解,请不要将此问题标记为重复。 我已经阅读了所有可用的答案,但没有一个能够解决我的问题。 场景:我必须添加具有单击展开和折叠功能的部分,这些部分根据API响应是动态的。所以我采用了树下结构的xml文件 main.xml 线性布局->滚动视图->线性布局 现在,我将根据响应在这个线性布局中添加自定义xml设计文件,并且该响应在每个部分中包含大量问题。 为了管理问题,我在自定义xml文件中使用了listview。现在,我必须显示每个完整高度的listview,所以只有顶部的滚动条可以工作,而在部分内部没有任何类型的滚动条 我已经检查了一些常用方法名为setListViewHeightBasedOnChildren的答案,但它不起作用,因为listview是在运行时动态添加的设置列表视图的动态高度,该视图在android中以编程方式添加,android,listview,listviewitem,Android,Listview,Listviewitem,未经理解,请不要将此问题标记为重复。 我已经阅读了所有可用的答案,但没有一个能够解决我的问题。 场景:我必须添加具有单击展开和折叠功能的部分,这些部分根据API响应是动态的。所以我采用了树下结构的xml文件 main.xml 线性布局->滚动视图->线性布局 现在,我将根据响应在这个线性布局中添加自定义xml设计文件,并且该响应在每个部分中包含大量问题。 为了管理问题,我在自定义xml文件中使用了listview。现在,我必须显示每个完整高度的listview,所以只有顶部的滚动条可以工作,而在
因此,请帮我解决这个问题。由于子列表的数量是动态的,您最好浏览一下库 您只需要再添加一个适配器来维护子列表。它也很容易定制
我已完成此操作,请尝试以下操作:
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();
}
public static void setListViewHeightBasedOnChildren(ListView ListView){
ListAdapter ListAdapter=listView.getAdapter();
如果(listAdapter==null){
//前提条件
返回;
}
int totalHeight=0;
int desiredWidth=MeasureSpec.makeMeasureSpec(listView.getWidth(),最多测量一次);
对于(int i=0;i
常用方法名称setListViewHeightBasedOnChildren。。。呵呵,这太糟糕了,它让谷歌的一名工程师(负责ListView)觉得很糟糕。我不是这么说的,但在堆栈溢出中,当我搜索时,我只会在每个答案中得到同名的解决方案。你可以检查NestedScrollView是否有帮助。。。如果没有,将一个ScrollView放在另一个ScrollView中没有正确的解决方案,我已经检查过了,但这里的值是从web API绑定的运行时,同时它在父视图中添加视图,所以它无法计算每个视图的实际高度,即使我使用相对或线性布局(而不是列表视图)进行了检查,但没有成功。。所以请不要在动态添加了动态数据的listview上否决这样的投票问题,这一个不起作用