在自定义控件的时候需要获取到控件的初始高度
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
mDefaultHeight = parentHeight;
this.setMeasuredDimension(parentWidth, parentHeight);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
但是这里的自定义控件里面的子控件会不断的改变自己的高度,导致这里的mDefaultHeight不断的变化。
而这里需要做的仅仅是取得自定义控件的初始高度。然后子控件高度变化的时候,根据具体的情况
让自定义控件高度重新设置为mDefaultHeight。上面的代码问题在于每次它的子控件变化的时候,onMeasure都会被调用。
mDefaultHeight也会变化。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int parentWidth = MeasureSpec.getSize(widthMeasureSpec);
int parentHeight = MeasureSpec.getSize(heightMeasureSpec);
if (!mInitializedFlag) {
mInitializedFlag = !mInitializedFlag;
mDefaultHeight = parentHeight;
}
this.setMeasuredDimension(parentWidth, parentHeight);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}