最近项目中遇到了这样的需求:列表条目中包含九宫格列表,分析发现就是ListView中嵌套GridView的使用。
开工之前就发现有不少提到listview中嵌套GridView发生冲突的问题,自己写的过程中果真出现了,具体的表现为:listview条目中的Gridview中只显示一行。通过重写GridView的onMeasure方法解决了显示问题(具体代码随便一搜一大堆,这里就不再造轮子了)。
但是出现了另一种情况:GridView的条目高度不够,高度为包裹内容的高度,再次查阅网络上的方法,发现了 public static void setGridViewHeightBasedOnChilderen(GridView gridview){...} 的方法,但是使用后发了报错 divider by zero 。即使将该方法内的行条目数量、分割线高度 这两个变量值写成固定的也不能解决问题。尼玛!
最后,我发现只要将GridView条目高度写成固定的,然后将其中的控件如Textview的高度写成固定的与条目高度一致,即可解决GridView条目高度不够的问题。