最近有一个需求,就是使用GridView,需要让高度实现自适应,于是乎在网上找了一个,发现很多人都是写了一个方法,重写测量高度,但是我用了之后并没有什么用,也许是我用错了地方。
这个需求一定要解决的,于是到处找资料,突然发现我之前写的一篇文章,自定义控件
我也给出连接,如果有需要的朋友可以看看
http://www.jianshu.com/p/730ff94f2982 自定义控件
于是我想GridView也可以重写呀,于是重写了一下GridView,并重写了它的测量方法;很简单的几行代码,实现了功能,我把代码也贴一下,给大家一个借鉴和参考:
/**
* author guofei_wu
* email guofei_wu@163.com
*/
public class MyGridView extends GridView {
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int heightSpec;
// 这几行代码比较重要
if(getLayoutParams().height == AbsListView.LayoutParams.WRAP_CONTENT){
heightSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
}else{
heightSpec = heightMeasureSpec;
}
super.onMeasure(widthMeasureSpec, heightSpec);
}
}
网友评论