試過在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())); ?
? ? ? ? ? ? } ?
? ? ? ? }); ?
?
具體用哪一種可以根據(jù)需求自己選擇