1.activity中有个onWindowFocusChanged()方法,可以获取控件的大小,别的地方可能会调用过早导致获取不到实际的大小
@Override
public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus){//获取焦点 heightmiddle = oldconent_floatlayout.getTop(); MyLog.e(TAG, "控件初始高度:" + heightmiddle); } }
2.fragment 没有onWindowFocusChanged()方法,不过可以调用视图树ViewTreeObserver的方法来实现:
ViewTreeObserver observer= oldconent2_floatlayout.getViewTreeObserver();
/**对视图变化进行监听的观察者 代替activity的onWindowFocusChanged()方法*/
observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() {
if (!isMeasured){ isMeasured=true; heightmiddle = oldconent_floatlayout.getTop(); MyLog.e(TAG, "Fragment控件初始高度:" + heightmiddle); } return true; }});
时间: 2024-11-05 12:10:56