ScrollView嵌套ListView的显示不全及滑动问题

问题描述

ScrollView嵌套ListView的显示不全及滑动问题 20C
需求描述:要在一个页面显示比较多的数据,如:旅图详情页面需要显示旅图照片、评论列表等等内容;而且页面可以上下滑动;当个人动态列表滑动到底部时,可以加载更多的评论。
如图-1:

思路分析:因为要在一个页面显示较多的数据,且还有评论列表这样的模块,一下子想到使用ScrollView嵌套ListView,ScrollView可以上下滚动,ListView用于加载评论列表。

发现的问题:按照上面的思路,我做了尝试,发现两个问题:1) ListView显示不全:ListView只显示第一个。2) ListView不能上下滑动。
解决尝试:经过一番搜索,看到网上有这样的一些解决办法,本人都一一拿来尝试:
a) 在ScrollView的布局文件中加入配置android:fillViewport=""true"",试下来后发现ListView能显示的大一些了,充满了屏幕,但是还是不能滑动显示全部的评论。
b) 用代码设置ListView的高度,即根据ListView中item数目的个数设置ListView的高度,这样滑动屏幕就能将看到所有评论。
但问题又来了:因为评论数据可能会很多,现在的做法是进入旅图详情页面时,只展示部分评论,当页面下拉到最后一条评论时,通过“上拉加载更多”的滑动方式去查询更多评论,但是发现滑动不了,ListView滑动不了。为此又经过了一番的搜索,是因为ViewGroup的事件拦截和触发机制的原因,当然可给出了一些方法,为此又做了一些尝试:
c) 重写ScrollView的onInterceptTouchEvent()方法直接返回false,即可将屏幕事件传递给子View,即可响应事件。
那么问题又来了,我只能把触摸点放在评论区域内,才能下拉加载更多,能不能触摸点在评论列表之外时,也能使评论区域上拉加载更多?另外如果想要使触摸屏幕上的任何一个点都可以往上滑动,该怎么做?因为发现当触摸点在评论列表上时,不能往上滑动,显示效果如图-2:


其实我最终想要实现的目标就像是微博的具体内容展示页那样。
当然看到网上也有推荐不要用ScrollView嵌套,而使用ListView的header。
再此,希望高手能帮忙解答下!!!

解决方案

你需要重新定义一个listview,然后measure得到所有item的长度
http://yxwang0615.iteye.com/blog/1739187

解决方案二:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

/**

解决方案三:
网上解决ScrollView嵌套ListView滑动冲突的有好多,下拉加载更多的方法这里我不建议在listview做,既然外层已经是ScrollView了,可以把下拉加载事件绑定到ScrollView,或者不要下拉加载换成点击加载更多。
然后,ScrollView嵌套ListView会一次性把所有的列表都加载绘制出来,需要资源和性能。如果可以尽量考虑用ListView,addHeaderView和addFooterView能解决大部分类似情况。

解决方案四:
非要用Scrollview嵌套Listview的话,Listview需要全部展开的,复写Listview的onMeasure方法:

@Overrideprotected void onMeasure(int widthMeasureSpec int heightMeasureSpec) {    int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2            MeasureSpec.AT_MOST);
    super.onMeasure(widthMeasureSpec expandSpec);}

不过这个有一个缺点就是无法复用,另外还有一个方案就是上半部分使用Header添加到Listview中去,其他的作为Item复用就可以了,建议用后者

解决方案五:
我的博客 http://blog.csdn.net/q610098308/article/details/50349465
这个应该可以完美解决你的问题;因为我也遇到了这种情况;

解决方案六:
android 解决ScrollView嵌套ListView的问题,不能全屏,全屏不能显示下面控件

解决方案七:
有去我博客里看最新的就是事件问题

时间: 2024-08-04 13:52:46

ScrollView嵌套ListView的显示不全及滑动问题的相关文章

Android中 ScrollView(ListView)中嵌套ListView时显示不全的简便解决方案

利用下面这个Utility 类的静态方法setListViewHeightBasedOnChildren()即可实现: 在listview.setAdapter()之后调用Utility.setListViewHeightBasedOnChilren(listview)就Okay 了. public class Utility { public static void setListViewHeightBasedOnChildren(ListView listView) { //获取ListVi

android scrollview嵌套listview计算高度的问题

 ScrollView中只能放一个控件,一般都放LinearLayout,orientation属性值为vertical.在LinearLayout中放需要呈现的内容.ListView也在其中,ListView的高度设为适应自身内容(wrap_content).但是为啥在scrollview中嵌套listview会出现只显示第一条listitem的高度呢,原因是:scrollview的ontach方法的滚动事件消费处理,ListView控件的高度设定问题 从谷歌那里找到的ScrollView嵌套

scrollview嵌套listview显示不对

问题描述 scrollview嵌套listview显示不对 scrollview嵌套listview显示不对,scrollview嵌套listview显示不对,怎么解决 在线等 解决方案 http://blog.csdn.net/lxk_1993/article/details/50403886

scrollview-关于ScrollView嵌套listview问题

问题描述 关于ScrollView嵌套listview问题 类似微信朋友圈,QQ空间,一进去界面上面一大块是背景和头像,下面是listview朋友们的动态,下拉的时候上面那块也可以拉走,那他是把上面那块一起加入listview中,还是用ScrollView里放着一个背景模块和listview模块,怎么实现的.我用ScrollView嵌套listview,然后再用网上那个动态设置item高度的方法,是可以显示,但是最后一个item却显示不完整,求大神指导!!! 解决方案 给ScrollView设置

安卓 scrollview嵌套listview上拉加载更多怎么实现啊

问题描述 安卓 scrollview嵌套listview上拉加载更多怎么实现啊 5C 如题 这个怎么实现啊,嵌套了监听不到 lv.setOnScrollListener(this) 这个事件 解决方案 Android scrollview中嵌套listview实现listview的下拉刷新上拉加载更多Android开发--上拉加载更多ListView实现ListView实现上拉加载更多 解决方案二: scrollview 直接嵌套listview 是不会实现上拉加载.两者一起使用起了冲突.这个时

Android ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多

ScrollView 效果 ScrollView 说明 一个ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新的demo. 主要是重写了GridView和LsitView中的onMeasure 方法. 写的比较简单,希望对初学者有帮助. /*** * 主要思路是 * ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新. * * 逻辑在适配器做了处理 * * 我们只让ListView加载2个数据Item,第一个是item对

ScrollView嵌套ListView滑动冲突的解决方法_Android

ScrollView和ListView这两个控件想必大家都不会陌生,但是这两者嵌套使用的时候就会出现麻烦.比如,我们如果想在ListView下面添加其他的布局或者控件,然后想让它们作为一个整体都可以滑动的话,最常想到的就是用一个ScrollView把它们包裹起来.想法似乎很美好,但是现实就有点残酷了.我们可以写一个小例子体验一下. 首先创建一个Activity,在它的布局文件上放置一个ListView: <?xml version="1.0" encoding="utf

ScrollView嵌套ListView滑动冲突的解决方法

ScrollView和ListView这两个控件想必大家都不会陌生,但是这两者嵌套使用的时候就会出现麻烦.比如,我们如果想在ListView下面添加其他的布局或者控件,然后想让它们作为一个整体都可以滑动的话,最常想到的就是用一个ScrollView把它们包裹起来.想法似乎很美好,但是现实就有点残酷了.我们可以写一个小例子体验一下. 首先创建一个Activity,在它的布局文件上放置一个ListView: <?xml version="1.0" encoding="utf

解决Scrollview 嵌套recyclerview不能显示,高度不正常的问题

我们先看一个效果,问题说的就是中间的Grid效果在Scrollview 嵌套recyclerview显示问题,在Android Api 24是好的,不过在5,1,1版本(api 22)缺出现了问题 最近项目中,有一个商品详情页面,页面有好几个网格页面,大家说,我们大可以用GridView去做,但是需要方的要求是,我们的网格的中间的线怎么做呢,对于GridView,我们知道我们可以这是一个背景,然后用verticalSpacing来做,这也算一个方法吧,但是对于Line线的计算是一个问题,有很多的