有时候我们须要在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);