[Android] Get the width and height of the control
Sometimes we need to obtain the width and height of the control during Activity for some operations. The following describes three methods to obtain the width and height: 1. onWindowFocusChanged
@Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (hasFocus) { int width = image.getMeasuredWidth(); int height = image.getMeasuredHeight(); Toast.makeText(MainActivity.this, "width = " + width + "---height = " + height, Toast.LENGTH_SHORT).show(); } }
2. post Method
@Override protected void onStart() { super.onStart(); image.post(new Runnable() { @Override public void run() { int width = image.getMeasuredWidth(); int height = image.getMeasuredHeight(); Toast.makeText(MainActivity.this, "onstart--width = " + width + "---height = " + height, Toast.LENGTH_SHORT).show(); } }); }
3. ViewTreeObserver
ViewTreeObserver observer = image.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { image.getViewTreeObserver().removeGlobalOnLayoutListener(this); int width = image.getMeasuredWidth(); int height = image.getMeasuredHeight(); Toast.makeText(MainActivity.this, "onglobal--width = " + width + "---height = " + height, Toast.LENGTH_SHORT).show(); } });
Note: The image above is an ImageView control.
ImageView image = (ImageView)findViewById(R.id.image);