Android在onCreate()中获得控件尺寸

jopen 10年前

@Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         final ImageView imageView = (ImageView) findViewById(R.id.imageview);               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();        textView.append("\n"+height+","+width);        System.out.println("执行完毕.."+System.currentTimeMillis());     }

//------------------------------------------------方法一 

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();   textView.append("\n"+height+","+width);

 

//-----------------------------------------------方法二 (亲测可用!在onStart()方法中调用)

ViewTreeObserver vto = imageView.getViewTreeObserver();   vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {       public boolean onPreDraw() {           int height = imageView.getMeasuredHeight();           int width = imageView.getMeasuredWidth();           textView.append("\n"+height+","+width);           return true;       }   });

 

//-----------------------------------------------方法三    

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