ListView在ScrollView中无法正常显示
对于ListView放在在ScrollView中时,目前Android平台仍然有些bug,状态是显示的ListView仅仅大约一行半(总Item肯定大于2行,比如10行),通过Layout布局属性设置目前仍然无法修正。通过分析ListView和ScrollView构造没有发现很好的解决方法,目前可以通过自己实现ListView来解决,Android123解决的方式重写ListView的onMeasure重新计算显示行数。希望在Android以后的版本,至少2.1以后能够改进。这个问题大家怎么解决的?能不能提供一个具体的例子

解决方案 »

  1.   

    这个问题我碰到了.在LAYOUT里面处理不好.可以用代码里面实现.
      

  2.   

    哈哈哈 我刚好碰到了这样的问题
    和这位兄弟情况一模一样
    搞了一天,结果是不成功的
    最后找了个变通的方法:
                  首先ScrollView内置一个Layout,此Layout内放置列表(不是指ListView)数据;
                  然后通过循环,直接借用ListView的配置文件list,通过以下方法找到一个View:
                    LayoutInflater.from(this).inflate(R.layout.list, null)
                  初始化以上的view并添加到Layout内结果成功          
      

  3.   


    此Layout内放置列表(不是指ListView)数据 什么意思?
    然后通过循环,直接借用ListView的配置文件list,通过以下方法找到一个View 往后我没看懂
      

  4.   


    就是放ListView的数据,而不是放ListView
      

  5.   

    如果想要单纯的实现一个scroll的效果。可以将ListView都放在一个linearlayout中,然后自己做一个onTouchEvent来实现scroll的效果。
      

  6.   

    放进ScrollView 如果图片过大就可以出现上下滚动的效果 ,我也没做出来,我最后做的出来的也是将ListView都放在一个linearlayout中。期待高手出现  !
      

  7.   

    这个问题已经问了好多了,根本上讲就不建议把ListView放进ScrollView中,因为ListView自己带滚动效果,如果非要放进去,肯定会出现UI异常,如果非要实现那些效果,可以换个思路考虑一下,
      

  8.   

    我非常同意13楼的说法。 这个不是BUG 是使用不当
      

  9.   

    LZ试试这样布局
    <ScrollView >
     <LinearLayout>
        <ListView>
        </ListView>
     </LinearLayout>
    </ScrollView >
      

  10.   

    LS,还是一样的,UI异常,不信可以试,你就嵌套多少都一样
      

  11.   

    这个链接的方法也是我之前想的解决办法,只不过我很懒,一直没有去试,总感觉这种方法过于复杂,简直是抓狂,所以我懒了,这个LZ已经把详细步骤写了,我没有试,不过看来应该可行,如果你就非要在ScrollView中添加ListView的话,这是个思路http://www.eoeandroid.com/thread-25319-1-1.html
      

  12.   

    scrollview和listview有冲突,最多显示两行,如果套嵌
      

  13.   

    在网上查了一下,找到了解决方法,但是没有搞透彻,大家可以看一下还有没有更好的办法
    自己写个类继承ListView 然后重新
    protected void  onMeasure(int widthMeasureSpec, int heightMeasureSpec)这个方法
    在中间调用setMeasuredDimension(320, 480);设置新的宽高public class XListView extends android.widget.ListView{

    public XListView(android.content.Context context) {
    // TODO Auto-generated constructor stub
    super(context);

    }

    @Override
    protected void  onMeasure(int widthMeasureSpec, int heightMeasureSpec){
      setMeasuredDimension(320, 480);
    }
    }
      

  14.   

    楼主先确认一下想实现什么效果啊
    我以前也遇到过,不过后来用listview的header和footer解决了。
      

  15.   

    不重写setMeasuredDimension是无法解决的,套嵌listview在scrollview中只会显示一行半,用header和footer是无法解决的
      

  16.   

    setMeasuredDimension  不能去确定究竟listView要显示多高的高度,如果要加载进来的话,最好是不用listView,用一个循环去动态的加载每一条数据,用header和footer对与显示一个简单的还可以,不如说一段文字下面有附件,可以把文字当成header,不用scrollview,也可以实现,但是 ,遇见一个有一个正文,下面有附件,关联文章,最近浏览人,  等等   你想用一个页面显示出来,并且整体是一个滚动效果,目前我就是这样去做的,但太麻烦了,期待更好的解决办法
      

  17.   

    在代码里控制,计算每一个Item高度,然后乘以个数。得到结果,把这个结果设为ScrollView高度。呵呵。有点笨。
      

  18.   

    这个是可以的  
    ,如果高度是“wrap_content”的,你又怎么去设置高度呢,
      

  19.   

    这个问题是老问题了,要解决肯定要重写一些方法。
    ScrollView和ListView都能滚动,我觉得ScrollView应该是由用户指定高度的,否则系统不着调如何设置高度了持续关注
      

  20.   


    然后在代码中这样设置
    LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(
    LayoutParams.FILL_PARENT, adapter.getCount() * 50 - 1);
    listview.setLayoutParams(lp1);
    其中50是每行的高度
      

  21.   

    ListView本身就支持滚动吧?为什么要放入ScrollView呢?
      

  22.   

    不明白你为什么要在listview 外面套 scrollView??
      

  23.   

    我现在就是这个写法,显示上没有问题,但是ListView很难滚动,偶尔一次能滚一下!我的页面:整个页面内容稍多,在小屏幕上显示不完全,所以加了ScrollView,另页面中间是一个Listview显示用户列表,没想到其他好的解决办法!搜一下原来有这么多人遇到了这问题!暂时把ScrollView去掉了,320*480的手机不太多了。哈哈,有合适的办法再加吧!
      

  24.   

    我现在就是这个写法,显示上没有问题,但是ListView很难滚动,偶尔一次能滚一下!我的页面:整个页面内容稍多,在小屏幕上显示不完全,所以加了ScrollView,另页面中间是一个Listview显示用户列表,没想到其他好的解决办法!搜一下原来有这么多人遇到了这问题!暂时把ScrollView去掉了,320*480的手机不太多了。
      

  25.   

    经过验证,简单有效,在listview.setAdapter()之后调用Utility.setListViewHeightBasedOnChilren(listview)就Okay 了
      

  26.   

    #37楼 哥们你可够搞笑的 你调用的方法不是系统方法 我们去哪调用呀 呵呵 不过明白你的意思  无非是动态计算listview的高度然后进行设置,这个方法可以很好的解决这个问题。 已经搞定了 哈哈
      

  27.   

    http://download.csdn.net/detail/yanjunhui2011/4444300
    这里面有完整的解决此问题的DEMO。