標籤:i++ string ongl append getview view word observer pre
有時候我們須要在Activity的時候擷取控制項的寬和高來做一些操作,以下介紹三種擷取寬和高的方式:
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方式
@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(); } });
備忘:以上image是ImageView控制項
ImageView image = (ImageView)findViewById(R.id.image);
【Android】擷取控制項的寬和高