獲取view寬高

2022-07-23 10:48:16 字數 1348 閱讀 1345

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

這是為什麼呢?

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

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

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

方法一 :

//測量方法?1

2345

intwidth =view.measurespec.makemeasurespec(0,view.measurespec.unspecified);

intheight =view.measurespec.makemeasurespec(0,view.measurespec.unspecified);

view.measure(width,height);

intheight=view.getmeasuredheight();

intwidth=view.getmeasuredwidth();

方法二 :?1

2345

6789

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

viewtreeobserver

vto =view.getviewtreeobserver();

vto.addonpredrawlistener(newviewtreeobserver.onpredrawlistener()

});

方法三 : ?1

2345

6789

10//增加整體布局監聽

viewtreeobserver

vto = view.getviewtreeobserver();

vto.addongloballayoutlistener(newongloballayoutlistener()

});

那麼,在activity進入執行期時,元件的尺寸獲取方法就很簡單了,直接getwidth()和getheight().

Android獲取View寬高的幾種方式

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

獲取控制項高寬

一般要獲取控制項的的高寬需要控制項已經顯示或者放在onpause,ondraw等畫圖裡面 我的操作如下,也是在網上學習過來的的,希望對搭建在開發中有點幫助 int w view.measurespec.makemeasurespec 0,view.measurespec.unspecified in...

獲取元素寬高

獲取元素寬高值 1.內聯樣式.element.style讀取的只是元素內聯樣式,即寫在元素的 style 屬性上的樣式,支援讀寫.var elebox document.getelementbyid eleid var h elebox.style.height 外聯樣式 巢狀樣式無法通過上述方法直...