Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android 取得view的寬和高

Android 取得view的寬和高

編輯:Android開發教程

Android 獲得view的寬和高
在oncreate()中利用view.getWidth()或是view.getHeiht()來獲取view的寬和高,看似沒有問題,其實他們去得值是0,並不是你想要的結果?

這是為什麼呢?

在調用oncreate()方法時,界面處於不可見狀態,內存加載組件還沒有繪制出來,你是無法獲取他的尺寸。

那如何在繪制組件之前能獲取到該組件的尺寸大小呢?

這裡有三種方法,經過驗證的:

 

方法一 :
//測量方法






1

2

3

4

5
 

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();
 


方法二 :






1

2

3

4

5

6

7

8

9
 

//增加組件繪制之前的監聽

ViewTreeObserver
 vto =view.getViewTreeObserver(); 

vto.addOnPreDrawListener(new 
ViewTreeObserver.OnPreDrawListener() { 

   @Override

    public 
booleanonPreDraw() { 

       int 
height =view.getMeasuredHeight(); 

       int 
width =view.getMeasuredWidth();     

   }


});

 

方法三 : 






1

2

3

4

5

6

7

8

9

10
 

//增加整體布局監聽

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