scrollview嵌套ExpandableListView、ListView导致显示高度不全

原创 2016年08月29日 17:29:11

在原理上,和scrollivew嵌套listview高度显示不全是同样的处理办法。

一、自定义一个类继承ListView,重写onMeasure()方法,计算listview的高度。

public class CustomExpandableListView extends ExpandableListView {

    public CustomExpandableListView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // TODO Auto-generated method stub
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,

                MeasureSpec.AT_MOST);

        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}


二、计算listivew自孩子的高度,在setAdapter之后调用。方法如下:

public void setListViewHeightBasedOnChildren(ListView listView) {
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null) {
            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来说,使用第二种方法更为简单,对于ExpandableListView则是第一种方法更为简单,因为对于ExpandableListView来说,还需要设置setOnGroupClickListener和onclapse等方法中添加计算高度的方法
参考文章http://blog.csdn.net/swust_chenpeng/article/details/17413955
http://www.cnblogs.com/supersugar/archive/2012/03/22/2411874.html
http://www.cnblogs.com/tittles0k/p/5630760.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

ScrollView中嵌套ListView或ExpandableListView时显示不全的问题

在一个layout文件中放入当一个ListView或ExpandableListView
  • mybaby525
  • mybaby525
  • 2014年05月05日 11:05
  • 1384

ExpandableListView嵌套ListView导致ListView不能完全显示数据的问题

最近为了得到分组下拉效果,使用了ExpandableListView控件,由于要在子元素显示非常复杂的布局方式,所以子元素采用了Listview进行布局 因此得到了一个问题,就是无论ListView...
  • jianhuanyu
  • jianhuanyu
  • 2015年01月30日 17:57
  • 1356

解决ScrollView嵌套listview动态设置高度时,item高度不一样时,最后一个item显示不完全

在ScrollView嵌套listview动态设置高度时,item高度不一样时,最后一个item显示不完全。对于这个问题,有两种解决办法。 1:重新listview的onmeasure方法,这个是最...
  • niu101025
  • niu101025
  • 2016年10月21日 14:21
  • 2080

ScrollView中嵌套ListView或ExpandableListView时显示不全的问题

在一个layout文件中放入当一个ListView或ExpandableListView
  • mybaby525
  • mybaby525
  • 2014年05月05日 11:05
  • 1384

ScrollView嵌套ListView冲突高度显示不全问题

实习中遇到了ScrollView里放置一个ListView的情况,照常书写代码测试的时候出现这种情况:   就是只显示一个item的高度。上网搜索了之后才知道是ScrollView嵌套ListV...
  • mouse12138
  • mouse12138
  • 2016年06月24日 13:26
  • 3013

解决ScrollView嵌套ListView,列表项高度不同,显示不全的问题

ScrollView嵌套ListView,首先碰到的问题,就是ListView只显示一个列表项,其他的不显示,解决方法:getView方法返回的View的必须由LinearLayout组成,因为只有L...
  • jifashihan
  • jifashihan
  • 2017年12月26日 15:58
  • 46

ScrollView嵌套ListView导致item显示不全的原因

一句话总结:ScrollView重写了它的父类FrameLayout的measureChild和measureChildWithMargins方法,使传入子类的HeightMeasureSpec的模式...
  • enjoy_azad
  • enjoy_azad
  • 2017年11月12日 23:51
  • 35

ScrollView嵌套ListView,解决显示不全的问题

  • 2016年05月23日 14:00
  • 1.47MB
  • 下载

解决ScrollView嵌套ListView显示不全问题

在看本文之前请写了解一下UNSPECIFIED、EXACTLY、AT_MOST三种模式。   在项目中经常会用到ScrollView嵌套ListView的情况。如果使用原生的ListView会出现只...
  • chenkai19920410
  • chenkai19920410
  • 2015年11月26日 23:06
  • 3826

Android 解决 ScrollView嵌套ListView、GridView冲突显示不全的最快实现

在Android开发中,ScrollView与ListView、GridView的嵌套使用经常都会用到,但是如果仅仅是纯粹的嵌套,ListView和GridView就会出现显示不全的情况,因为Scro...
  • yyh352091626
  • yyh352091626
  • 2015年09月21日 16:25
  • 5690
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:scrollview嵌套ExpandableListView、ListView导致显示高度不全
举报原因:
原因补充:

(最多只允许输入30个字)