public MyScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyScrollListView(Context context) {
super(context);
}
public MyScrollListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
//该自定义控件只是重写了ListView的onMeasure方法。
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
MeasureSpec是一个32位的int值,其中高2位代表测量模式,低30位代表测量大小。
在makeMeasureSpec中 return size + mode;
其实MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST)就是生成一个符合MeasureSpec的一个32位的包含测量模式和测量高度的int值。
网友评论