oncreate中獲取控件寬高

若是想在onCreate裏面獲取控件的寬和高,直接調用view.getWidth()或者view.getHeight()返回的是0,由於onCreate方法執行完了,咱們定義的控件纔會被度量(measure),因此咱們在onCreate方法裏面經過view.getHeight()獲取控件的高度或者寬度確定是0java

方法一:app

int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);  
int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED);  
imageView.measure(w, h);  
int height =imageView.getMeasuredHeight();  
int width =imageView.getMeasuredWidth();

此方法調用onMeasure方法三次ide

方法二:函數

ViewTreeObserver vto = imageView.getViewTreeObserver();  
        vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {  
            public boolean onPreDraw() {  
                int height = imageView.getMeasuredHeight();  
                int width = imageView.getMeasuredWidth();  
                
                return true;  
            }  
        });

此方法會加載onMeasure二次,可是回調函數會回調不少次this

方法三:code

ViewTreeObserver vto2 = imageView.getViewTreeObserver();    
        vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {  
            @Override    
            public void onGlobalLayout() {  
                imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);    
                textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth());  
            }    
        });

此方法會加載onMeasure二次,可是回調函數只回調一次server

相關文章
相關標籤/搜索