大家在使用ListView和ScrollView嵌套时会发现ListView无法全部展开,这是为什么呢?
看一下源码就很好理解了
ScrollView在测量子View的时候,会强制把子View的MeasureSpec模式改为MeasureSpec.UNSPECIFIED,然后再看一下Listview的onMeasure方法
当模式为MeasureSpec.UNSPECIFIED的时候,ListView的高度会别设置为子View的高度加上 top和bottom的padding值
所以ListView和ScrollView嵌套使用无法展开,只能显示一个条目;
那么如何解决呢
因为是ListView的测量问题,所以自然而然的就会想到重写ListView的onMeasure方法;
更改它的测量模式,看上图当MeasureSpec为AT_MOST的时候返回的heightSize的高度是所有子 View的总高度
重写后如下图
至于为什么还要有一个Integer.MAX_VALUE>>2,大家可以访问 为什么MAX_VALUE>>2了解一下
代码动手巧一下吧,复制粘贴不如亲自动手,加油,喜欢的小伙伴记得点个赞呦~
网友评论