有时候我们需要在Activity的时候获取控件的宽和高来做一些操作,下面介绍三种获取宽和高的方式:
1. onWindowFocusChanged
1 2 3 4 5 6 7 8 9 10 11 12 | <code class="hljs java">@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(); }
}</code> |
2. post方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <code class="hljs java"> @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(); } }); }</code> |
3. ViewTreeObserver
1 2 3 4 5 6 7 8 9 10 11 12 13 | <code class="hljs java"> 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(); } });</code> |
备注:以上image是ImageView控件
ImageView image = (ImageView)findViewById(R.id.image);