解决ScrollView中嵌套ListView滚动效果冲突问题

在ScrollView中嵌套使用ListView,ListView只会显示一行到两行的数据。起初我以为是样式的问题,一直在对XML文件的样 式进行尝试性设置,但始终得不到想要的效果。后来在网上查了查,ScrollView和ListView两个View都有滚动的效果,在嵌套使用时起了冲 突,一般不建议两者套用。

下面说说具体解决方案。方案的主要思路就是根据ListView子项重置其高度。

解决方案代码如下:

java代码:

[html] view plain copy print?

  1. /**
  2. * 重新计算ListView的高度,解决ScrollView和ListView两个View都有滚动的效果,在嵌套使用时起冲突的问题
  3. * @param listView
  4. */
  5. public void setListViewHeight(ListView listView) {
  6. // 获取ListView对应的Adapter
  7. ListAdapter listAdapter = listView.getAdapter();
  8. if (listAdapter == null) {
  9. return;
  10. }
  11. int totalHeight = 0;
  12. for (int i = 0, len = listAdapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目
  13. View listItem = listAdapter.getView(i, null, listView);
  14. listItem.measure(0, 0); // 计算子项View 的宽高
  15. totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度
  16. }
  17. ViewGroup.LayoutParams params = listView.getLayoutParams();
  18. params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
  19. listView.setLayoutParams(params);
  20. }

在设置LIstView的Adapter后调用此方法便可。

但是要注意的是,子ListView的每个Item必须是LinearLayout,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。

时间: 2024-08-01 22:47:53

解决ScrollView中嵌套ListView滚动效果冲突问题的相关文章

解决ScrollView中嵌套Listview,Listview中嵌套Listview显示不完整和滑动冲突的问题

在一个滑动控件或者是布局里面,添加另外一个可以滑动的控件,通常会造成一些莫名其妙的问题.今天主要介绍在工作中遇到的,在ScrollView布局中嵌套Listview显示不正常,和在Listview中嵌套Listview的滑动冲突的问题. 1.ScrollView布局中嵌套Listview显示不正常的解决方案 目前来说,解决这个问题有好几种解决方案,这里只介绍其中两种比较简单易行的其中两种. (1)自定义一个Listview,继承自Listview,代码如下: public class ListV

解决ScrollView下嵌套ListView、GridView显示不全的问题(冲突)

原文地址:http://blog.csdn.net/cs_li1126/article/details/12906203 一.使用网上用的动态改变listview高度的方法,该方法只适用于item布局是LinearLayout布局的情况,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常.所以使用限制较大. [java] view plaincopy public class Utility { publ

笔记整理1_1:解决在ScrollView中嵌套ListView不能显示全部item的问题

package com.example.scrollview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import com.pb.custo

ScrollView中嵌套ListView时,listview高度显示的问题

方法一:直接更改listview的控件高度,动态获取(根据条目和每个条目的高度获取) 前几天因为项目的需要,要在一个ListView中放入另一个ListView,也即在一个ListView的每个ListItem中放入另外一个ListView.但刚开始的时候,会发现放入的小ListView会显示不完全,它的高度始终有问题.上网查了下,发现别人也有遇到这样的问题,而大多数人都不推荐这样的设计,因为默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,它的高度是无法计

Android -- 在ScrollView中嵌套ListView

在做一个工程,这个工程的布局可以相当的复杂,最外面是ScrollView,在ScrollView里面有两个Listview,这下好了,布局出来了,放在机子上跑,卡得想死有木有,信息乱跑乱出现,表示非常头疼. 在网上百度之后,发现有人解决了这个问题,便把这个解决方案转载过来分享一下. 它的思路就是在设置完ListView的Adapter后,根据ListView的子项目重新计算ListView的高度,然后把高度再作为LayoutParams设置给ListView,这样它的高度就正确了. public

Android实战技巧:如何在ScrollView中嵌套ListView

前几天因为项目的需要,要在一个ListView中放入另一个ListView,也即在一个ListView的每个ListItem中放入另外一个ListView.但刚开始的时候,会发现放入的小ListView会显示不完全,它的高度始终有问题.上网查了下,发现别人也有遇到这样的问题,而大多数人都不推荐这样的设计,因为默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,它的高度是无法计算的. 又搜索了一下,发现有StackOverflow上的牛人已经解决了这个问题,经过

解决ScrollView下嵌套ListView或Gridview进页面不在顶部的问题

最近项目用到了scrollview内部嵌套ListView或Gridview,本来这样做不太好,但是接口不提供网页资源,只有自己一个一个View的拼凑了,苦逼的程序猿,大家都懂的, 但是写好后发现一个问题,每次进入这个页面后,scrollview不是显示在顶部,而是底部或者中间,令老夫很是惆怅啊,经过千百度万谷歌,终于试出了一个方法,可以解决这个问题,但是也不是完美解决,偶尔也会没效果的,代码如下: scrollview.smoothScrollTo(0,0); 在listview绘制好数据后使

解决scrollView中嵌套编辑框导致不能上下滑动的问题

EditText设置maxLines之后,文本行数超过maxLines,会网上折叠,上下滑动可以浏览所有文本. 若EditText外层有scrollView,在EditText上下滑动,不会像正常情况那样上,只会滑动了scrollView. 解决办法是: mEt_content.setOnTouchListener(this); // 解决scrollView中嵌套EditText导致不能上下滑动的问题 @Override public boolean onTouch(View v, Motio

解决:ScrollView中嵌套ListView,使得listview上下滑动卡顿现象

效果图就是上面的那样!实现方式:上面是一个ViewPager实现的左右无限循环并带有自动轮播的banner.在banner图的下面是一个listview实现上拉加载的功能:但是在我实现的过程中我遇到了一个问题,就是整个页面的展示效果都已经实现,但是banner图连带下面的listview在上下滑动的时候出现卡顿的现象:当然之前也遇到了一个问题,就是我的banner图和listview一起放在了父控件ScrollView中,是的listview不能完全显示:那么就来解决这两个问题. 解决问题一:<