在一次做三级导航的过程中,我将第三级列表(GridView)放入到了一个RecyclerView的条目中,但是无论测试多少次,我的GridView都是只能显示一行,显示不全,屡试屡败,最终这个问题才得以解决:
创建自定义View继承GridView,重写onMeasure()方法,在每次绘制时重新计算我们这个控件的高度,具体代码如下:
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//makeMeasureSpec根据提供的大小值和模式创建一个测量值(格式)
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
这样每一次view的高度就会重新由我们提供的大小值和模式创建的测量值决定,就解决了GridView只能显示一行的尴尬局面