View無法再oncreate獲取值

2021-10-09 03:14:02 字數 528 閱讀 1406

因為此時view可能繪製還沒完成所以獲取到的值可能為0;

可以通過view.post去獲取值

通過post可以將乙個runnable投放到訊息佇列尾部,意思是將任務新增到訊息佇列中,保證在ui執行緒執行。從本質上說,它還是依賴於以handler、looper、messagequeue、message為基礎的非同步訊息處理機制。下面舉乙個常用的例子,比如在oncreate方法中獲取某個view的寬高,而直接view#getwidth獲取到的值是0。要知道view顯示到介面上需要經歷onmeasure、onlayout和ondraw三個過程,而view的寬高是在onlayout階段才能最終確定的,而在activity#oncreate中並不能保證view已經執行到了onlayout方法,也就是說activity的宣告週期與view的繪製流程並不是一一繫結。那為什麼呼叫post方法就能起作用呢?首先messagequeue是按順序處理訊息的,而在setcontentview()後佇列中會包含一條詢問是否完成布局的訊息,而我們的任務通過view#post方法被新增到佇列尾部,保證了在layout結束以後才執行。

在oncreate中如何獲取view的高度和寬度

在程式設計中我們時常需要獲取view的高度和寬度,下面有兩個方法來獲取view的寬高,getheight 和getmeasuredheight getheight 和getmeasuredheight 的區別 getmeasuredheight 獲取測量完的高度,只要在onmeasure方法執行完,...

linux啟動到grub無法再啟動下去故障解決

今天早上開機時,發現系統啟動到grub時就停了,而且無法輸入字元,由於身邊沒有linux的修復光碟,於上在網上找了乙個u盤啟動的linux想用u盤啟動系統。氣人的是這爛筆記本居然不支援u盤啟動,難道要出去買張linux 盤?還好,筆記本還支援網路啟動。於是我在網上找了loadlin.exe,2.6....

VS 除錯斷點命中了,程式無法再斷點處中斷

無法命中處理 1.首先確認一下,程式的dll與原始碼是否一致,可以編譯之後再進行 2.確認是否有公共的檔案儲存常用的dll,導致程式沒有走最新編譯的dll 3.vs程式除錯時會用到 pdb檔案,是否dll是最新的但是 pdb檔案不是最新的,刪掉 pdb檔案 上述問題都確認沒有問題,但是斷點可以命中,...