Android獲取View寬高的幾種方式

2021-07-09 11:35:57 字數 826 閱讀 6877

有時我們會有基於這樣的需求,當activity建立時,需要獲取某個view的寬高,然後進行相應的操作,但是我們在oncreate,onstart中獲取view的大小,獲取到的值都是0,只是由於view的繪製工程還未完成,和在oncreate中彈出dialog或者popupwindow會報乙個activity not running原理類似。接下來就為大家介紹幾種獲取view寬高的方法:

一、重寫activity中的onwindowfocuschanged,當activity獲取到焦點的時候view已經繪製完成,也能獲取到view的準確寬高了。同樣的dialog和popupwindow也可以在這裡彈出,需要注意的是這個方法會呼叫多次,當hasfocus為true時,才可進行相應的操作

@override

public

void

onwindowfocuschanged

(boolean

hasfocus

)}

二、

/**

* 會執行多次

*/private

void

getsize1

()});

}

三、

private

void

getsize2

()});

}

四、

private

void

getsize3

()});

}

獲取view寬高

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

android 獲取螢幕寬高

發現專案中有兩種獲取螢幕寬高的方法 一 通過windowmanager獲取display,通過display獲取metrics,通過metrics獲取寬高。最後的單位是px。public static final int getscreenwidth 二 通過windowmanager獲取displ...

Android獲取螢幕寬高

方法一 windowmanager wm1 this.getwindowmanager int width1 wm1.getdefaultdisplay getwidth int height1 wm1.getdefaultdisplay getheight 方法二 windowmanager wm...