您的位置:首页 > 其它

自定义控件里面获取控件的高度遇到的问题。

2015-11-17 15:10 423 查看
在自定义控件的时候需要获取到控件的初始高度

@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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: