轉自http://blog.csdn.net/comeonsbt/article/details/7722640
試過在OnCreate()中擷取控制項高度與寬度的童鞋都知道,getWidth()與getHeight()方法返回是0,具體原因 看一下Activity的生命週期 就會明白。
上代碼:
方法一:
int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);
ssidtext.measure(w, h);
int width =ssidtext.getMeasuredWidth();
int height =ssidtext.getMeasuredHeight();
方法二:
ViewTreeObserver vto = ssidtext.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
int height = ssidtext.getMeasuredHeight();
int width = ssidtext.getMeasuredWidth();
return true;
}
});
另外還搜尋到一個方法:
-----------------------------------------------------------
先貼到這裡。正在做實驗。(實驗完畢,這種方法得到的控制項寬是正確的。)
ViewTreeObserver vto = mArrowUp.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mArrowUp.getViewTreeObserver().removeGlobalOnLayoutListener(this);
Log.e("Width",Integer.toString(mArrowUp.getWidth()));
}
});