参考自:http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a-scrollview-without-it-collapsing/3495908#3495908
利用下面这个Utility 类的静态方法setListViewHeightBasedOnChildren()即可实现:
在listview.setAdapter()之后调用Utility.setListViewHeightBasedOnChilren(listview)就Okay 了。
public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
//获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) { //listAdapter.getCount()返回数据项的数目
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0); //计算子项View 的宽高
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控件的高度。
分享到:
相关推荐
当在一个ScrollView中嵌套一个ListView时,可能会遇到一些特定的问题,尤其是在实现下拉刷新功能时。本文将深入探讨这些问题及其解决方案。 ### 问题1:滑动冲突 由于ScrollView和ListView都具有滚动功能,它们之间...
然而,由于ScrollView自身并不支持滚动事件的监听,因此当我们在ScrollView中嵌套可滚动的组件如ListView或GridView时,可能会遇到滚动冲突问题。为了解决这个问题,开发者需要手动处理滚动事件,或者选择使用如...
【Android】ListView、RecyclerView、ScrollView里嵌套ListView 相对优雅的解决方案:NestFullListView 博客:http://blog.csdn.net/zxt0601/article/details/52494665
问题在于,当ListView被放在ScrollView中时,由于ListView自身已经具备了滚动功能,这可能导致ScrollView无法正确检测到ListView的滚动事件,进而使得整个嵌套结构的滚动变得混乱。用户可能无法滚动到ScrollView的...
本文将深入探讨如何解决ScrollView中嵌套两个ListView不显示的问题。 首先,我们需要理解为何会出现这样的问题。ScrollView设计的初衷是允许其内部的单一视图进行垂直滚动。而ListView已经实现了自身的滚动机制,...
用于解决scrollview组件嵌套listview组件时候 两者之间的冲突问题
在Android开发中,ListView是用于显示大量数据列表的常用组件,而ScrollView则是一个可以垂直滚动的视图容器,常用于包含多个子视图。当在一个ScrollView内嵌套一个ListView时,由于两者都具有滑动功能,可能会导致...
当在一个ScrollView内嵌套一个ListView时,可能会遇到显示不全的问题,这通常是由于两者都具有滚动功能而产生的冲突。下面将详细解释这个问题,并提供解决方案。 首先,我们需要理解ScrollView和ListView的工作原理...
当ScrollView嵌套ListView时,可能会遇到显示不全的问题,即ListView的内容无法完全显示,只能看到一部分。这个问题主要是由于两个可滚动视图的冲突造成的。本文将详细探讨解决这一问题的四种方法。 ### 方法一:...
在Android开发中,有时我们需要构建复杂的用户界面,这时可能会涉及到ScrollView与ListView的嵌套使用,甚至在ListView中再嵌套ListView。这样的布局设计虽然能够满足多样化的显示需求,但同时也带来了一些挑战,如...
在Android开发中,ScrollView和ListView是两种常用的布局组件。ScrollView是一个可以滚动的视图容器,它允许其内容超出屏幕大小。而ListView则用于显示一列可滚动的项目,通常用于展示大量的数据。当在一个布局中...
很多朋友因项目需求问题需要在ScrollView中嵌套使用ListView或ScrollView 但是彼此的滑动事件会发生冲突,网上大多数都是计算ListView的高度来解决这个问题,但个人亲手尝试 结果ListView的Item要是过多的话ListView...
在Android开发中,ScrollView通常用于实现可滚动的内容区域,而ListView则是一个用于显示大量数据的视图组件,它能够自动管理子视图并实现滚动。然而,当ScrollView和ListView同时存在,即“ScrollView中嵌套...
当ScrollView中嵌套ListView或者GrideView时,listView和GrideView不能完全显示的时候
本篇文章将深入探讨如何解决ScrollView与ListView的嵌套问题,并通过自定义ListView来实现正常显示每个Item,确保滑动操作由ScrollView有效控制。 首先,我们需要理解ScrollView和ListView的工作原理。ScrollView是...
当在一个ScrollView中嵌套一个ListView时,可能会遇到一些问题,比如ListView显示不全或者只显示一个条目。这些问题通常由于两者的滚动机制冲突导致,因为两者都具有滚动功能,系统可能无法正确处理它们之间的交互。...
然而,当ListView被放置在ScrollView内时,两者之间的嵌套冲突问题就会显现出来。这种冲突主要体现在ListView无法正确地展示其内容,因为ScrollView会尝试将所有子视图(包括ListView)都放入屏幕可见范围内,导致...
在Android开发中,ScrollView和ListView的嵌套是一个常见的需求,但也是一个挑战,因为它们都是滚动视图,直接组合可能导致冲突和不可预期的行为。本篇文章将详细介绍四种解决ScrollView嵌套ListView问题的方法,...
总的来说,解决Android中ListView嵌套ScrollView不能刷新的问题需要理解Android的滚动机制,合理选择或定制组件,以及优化布局设计。通过实践和学习,开发者可以克服这个挑战,实现流畅的用户界面。
首先,我们要理解为什么ScrollView和ListView不建议直接嵌套。主要原因是性能问题。ListView通过复用已创建的列表项(ViewHolder机制)来优化滚动性能,而ScrollView没有这个机制。当两者嵌套,ListView的优化效果被...