Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 獲取組件尺寸大小

android 獲取組件尺寸大小

編輯:關於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 booleanonPreDraw() { 
       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().

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved