Android 獲得view的寬和高,為0

2021-09-02 08:47:05 字數 1003 閱讀 1275

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

這是為什麼呢?

在呼叫oncreate()、onstrart()、onresume()方法時,介面處於不可見狀態,記憶體載入元件還沒有繪製出來,你是無法獲取他的尺寸。

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

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

//測量方法

int widthspec =view.measurespec.makemeasurespec(0,view.measurespec.unspecified); 

int heightspec =view.measurespec.makemeasurespec(0,view.measurespec.unspecified);    

view.measure(widthspec,heightspec);      

int height=view.getmeasuredheight();  

int width=view.getmeasuredwidth();

//增加元件繪製之前的監聽

viewtreeobserver

vto =view.getviewtreeobserver();

vto.addonpredrawlistener(new

viewtreeobserver.onpredrawlistener()

});

//增加整體布局監聽

viewtreeobserver

vto = view.getviewtreeobserver();

vto.addongloballayoutlistener(new

ongloballayoutlistener()

});

Android 獲得view的寬和高

在oncreate 中利用view.getwidth 或是view.getheiht 來獲取view的寬和高,看似沒有問題,其實他們去得值是0,並不是你想要的結果?這是為什麼呢?在呼叫oncreate 方法時,介面處於不可見狀態,記憶體載入元件還沒有繪製出來,你是無法獲取他的尺寸。那如何在繪製元件之...

Android獲得螢幕寬高的方法

android開發中獲得螢幕的寬度和高度還是比較常用的,在網上找到了很多,在這算是乙個總結,以便以後使用。1.看到的最常見的一種就是一下的這種了 windowmanager getwindowmanager 得到視窗的管理者 display display windowmanager.getdefa...

Android獲取View寬高的幾種方式

有時我們會有基於這樣的需求,當activity建立時,需要獲取某個view的寬高,然後進行相應的操作,但是我們在oncreate,onstart中獲取view的大小,獲取到的值都是0,只是由於view的繪製工程還未完成,和在oncreate中彈出dialog或者popupwindow會報乙個acti...