安卓学习爬坑系列-ScrollView嵌套ListView导致数据只有一行的问题

398 阅读1分钟

1.现场:如图1


图1

2.原因:如图1所示,应该由多条数据的折叠列表,却只显示了一条,原因在于使用的ListView系列的控件的测量方法的问题,因为在进项布局测量时,安卓对ListView和ScrollView使用的测量模式是UNSPECIFIED,源码追溯路线:

ExpandableListView->ListView,如图2源码截图所示:


3.源码解析,在进项ListView的布局测量时,对高度的测量模式判断是UNSPECIFIED(越大越好),因此计算的高度中,只取了一个子布局的高度来进行计算。

4.解决思路:重写使用的ListViewl类控件的测量方法,使用MeasureSpec.makeMeasureSpec()方法来定制测量模式为AT_MOST,如图3: