Android開發 獲取View的尺寸的2個方法


前言

  總所周知,在activity啟動的onCreate或者其他生命周期里去獲取View的尺寸是錯誤的,因為很有可能View並沒有初始化測量繪制完成.你這個時候獲取的寬或的高不出意外就是0.所以,我們需要等待View的繪制完成后再來測量

第一種方法,將測量添加到View列隊里

mTextView.post(new Runnable() {
            @Override
            public void run() {
                int w = mTextView.getWidth();
                int h = mTextView.getHeight();
                
            }
        });

這個方式在TextView初始化全部完成后會執行這個消息列隊里的邏輯

第二種方法,監聽View的測繪完成

mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener(
    new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {                                                        
            mHeaderViewHeight = mHeaderView.getHeight();
            mHeaderView.getViewTreeObserver()
                    .removeGlobalOnLayoutListener(this);
        }
});

但是需要注意的是OnGlobalLayoutListener可能會被多次觸發,因此在得到了高度之后,要將OnGlobalLayoutListener注銷掉。另外mHeaderViewHeight和mHeaderView都需要寫在當前java文件類(比如Activity)的成員變量中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM