最近的做的直播项目中布局界面用到了斗鱼首页的样式如下图所示,最后采用的ListView嵌套GridView来实现。
但是效果并不是预期的这样,GridView中的元素没有显示完全,gridView中应该是显示四个元素的,但是listView中的item中显示了gridView中的两个元素。
后来在网上查看了相应的资料,说是要重写GridView中的onMeasure方法,来重新测量控件的高度。然后把GridView换成com.lzh.View.LiugYingGridView,就可以了。
代码如下:
package com.lzh.View;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;
/**
* Created by lzh on 2016/1/8.
*/
public class LiugYingGridView extends GridView {
public LiugYingGridView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public LiugYingGridView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public LiugYingGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// 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);
}
}
现在界面显示就正常了,如下图所示: