(1)添加监听:
ViewTreeObserver viewTreeObserver = mLayout.getViewTreeObserver();
viewTreeObserver.addOnPreDrawListener(mListener);
(
2)监听内容,调整控件位置:
private ViewTreeObserver.OnPreDrawListener mListener = new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
if (mFirstTime == false) { // 使用标识,只调整一次,需要再次调整时,把标识位置回即可
int height = mLayout.getMeasuredHeight(); // 获取基准控件的高度
RelativeLayout.LayoutParams lp = (LayoutParams) mImg.getLayoutParams(); // 获取需要调整控件的位置参数
lp.bottomMargin = height; // 把距离底部的位置设置为基准控件的高度
mImg.setLayoutParams(lp); // 重新设置位置参数
mFirstTime = true; // 调整标识位
}
return true;
}
};
(3)适时
remove掉监听,避免造成内存泄露
<span style="white-space:pre"> </span>ViewTreeObserver viewTreeObserver = mLayout.getViewTreeObserver();
<span style="white-space:pre"> </span>viewTreeObserver.removeOnPreDrawListener(mListener);