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

相关文章
相关标签/搜索