本文實例講述了Android編程獲取組件尺寸大小的方法。分享給大家供大家參考,具體如下:
在oncreate()中利用view.getWidth()或是view.getHeiht()來獲取view的寬和高,看似沒有問題,其實他們去得值是0,并不是你想要的結果?
這是為什么呢?
在調用oncreate()方法時,界面處于不可見狀態,內存加載組件還沒有繪制出來,你是無法獲取他的尺寸。
那如何在繪制組件之前能獲取到該組件的尺寸大小呢?
這里有三種方法,經過驗證的:
方法一 :
//測量方法int width =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);int height =View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);view.measure(width,height);int height=view.getMeasuredHeight();int width=view.getMeasuredWidth();
方法二 :
//增加組件繪制之前的監聽ViewTreeObserver vto =view.getViewTreeObserver();vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public ooleanonPreDraw() { int height =view.getMeasuredHeight(); int width =view.getMeasuredWidth(); }});方法三 :
//增加整體布局監聽ViewTreeObserver vto = view.getViewTreeObserver();vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener(){ @Override public voidonGlobalLayout() { view.getViewTreeObserver().removeGlobalOnLayoutListener(this); int height =view.getMeasuredHeight(); int width =view.getMeasuredWidth(); }});那么,在activity進入運行期時,組件的尺寸獲取方法就很簡單了,直接getWidth()和getHeight().
更多關于Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答