獲取計算的檢視尺寸

請注意,與 View 例項關聯的 ViewTreeObserver 例項可能無效,而 View 仍處於活動狀態。來自 View.getViewTreeObserver javadocs:

// The returned ViewTreeObserver observer is not guaranteed to remain
// valid for the lifetime of this View. If the caller of this method keeps
// a long-lived reference to ViewTreeObserver, it should always check for
// the return value of {@link ViewTreeObserver#isAlive()}.

因此,如果你之前已經向 ViewTreeObserver 例項新增了一個監聽器並且現在希望將其刪除,則最簡單的方法是再次在相應的 View 例項上呼叫 getViewTreeObserver 以接收新的 ViewTreeObserver 例項。 (在現有例項上檢查 isAlive 是一項效果較差的工作;如果 ViewTreeObserver 不再存在,那麼無論如何你都會獲得新的參考!)