最近因为项目的需要,要在一个
ScrollView
中放入一个ListView,虽然不推荐这样的设计,尽量不要让两者嵌套,但有时候还是要不得已而为之。发现
ScrollView中放入ListView后,后者的高度有问题,无论怎么设置高度,大约只显示一行半的高度,除非将ListView的高度设定死,但ListView高度根据数据的不同,高度肯定也不同,如果设置死的话滑动又成问题,想来,ListView本身应该具备滑动功能,两个具备滑动功能的控件嵌套在一起的话,可能就会出问题了吧,父容器可能将子控件的滑动事件覆盖掉了吧,再说,两个控件的高度都无法计算,所以不推荐嵌套在一起使用。
解决思路也很简单,
就是在设置完ListView的Adapter后,根据ListView的子项目重新计算ListView的高度,然后把高度再作为LayoutParams设置给ListView,这样它的高度就正确了。代码如下:
public static void reSetListViewHeight(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
在设置ListView的Adapter后调用此静态方法即可让ListView正确的显示在
ScrollView
中。但是要注意的是,ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。
分享到:
相关推荐
解决ScrollView中嵌套ListView不显示问题
ScrollView中嵌套ListView的例子和解决方案
Scrollview中嵌套listview,listview中再嵌套listview代码示例工程
ScrollView中嵌套listview 解决滑动冲突问题
ScrollView,嵌套ListView,ListView并同时嵌套GridView
解决Scrollview嵌套listview下拉刷新的一些问题
Android ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多
ListViewForScrollView实现Scrollview中嵌套listView.zip 可以实现Scrollview滑动和ListView滑动,互不抢占焦点
当ScrollView中嵌套ListView或者GrideView时,listView和GrideView不能完全显示的时候
ScrollView中嵌套ListView,还可以嵌套多个listview 解决无法共存问题。放到项目中可以直接用
很多朋友因项目需求问题需要在ScrollView中嵌套使用ListView或ScrollView 但是彼此的滑动事件会发生冲突,网上大多数都是计算ListView的高度来解决这个问题,但个人亲手尝试 结果ListView的Item要是过多的话ListView...
本篇文章是对Android中在ScrollView中嵌套ListView的方法进行了详细的分析介绍,需要的朋友参考下
本篇文章是对如何在ScrollView中嵌套ListView的解决方法进行了详细的分析介绍,需要的朋友参考下
解决ScrollView中嵌套ListView的冲突示例,重写了一个listView,放到ScrollView中,解决了滚动条冲突的问题。
用于解决scrollview组件嵌套listview组件时候 两者之间的冲突问题
【Android】ListView、RecyclerView、ScrollView里嵌套ListView 相对优雅的解决方案:NestFullListView 博客:http://blog.csdn.net/zxt0601/article/details/52494665
Scrollview中嵌套ViewPager和ListView常出现的问题: ViewPager如果在Scrollview中使用,并且宽高指定为match_parent或者wrap_content则不会显示内容,但是如果将高度指定为200dp,则ViewPager则会将内容显示到屏幕...
ScrollView嵌套ListView,当ListView的顶部到达屏幕顶部时,listView才具有滑动能力,当listView滑动到两端时,会触发ScrollView滑动
ScrollView嵌套ListView刷新,可深入的学习Scrollview
一个特效Demo 具体看博客http://blog.csdn.net/liubo20140401/article/details/47907039 一个向上滑动 tab固定顶部 scrollview中嵌套viewpager嵌套listview 还有回到顶部