如何获取ImageView的高度和宽度?

Posted

技术标签:

【中文标题】如何获取ImageView的高度和宽度?【英文标题】:How to get the height and width of ImageView? 【发布时间】:2014-05-01 17:18:48 【问题描述】:

我正在尝试获取它返回 0 的 ImageView 机器人的高度和宽度

public class FullScreenImage extends FragmentActivity 
    ImageView full_view;
    int width;
    int height;
    @Override
    protected void onCreate(Bundle arg0) 
        super.onCreate(arg0);

        setContentView(R.layout.full_screen);

        full_view   = (ImageView)findViewById(R.id.full_view);

        Bundle bundle=getIntent().getExtras();
        byte[] image=   bundle.getByteArray("image");

        width       =     full_view.getWidth();
        height      =     full_view.getHeight();

        Bitmap theImage = BitmapFactory.decodeByteArray(image, 0, image.length);
        Bitmap resized = Bitmap.createScaledBitmap(theImage,width , height, true);

        full_view.setImageBitmap(resized);
    



请帮助我,如何从 ImageView 中找到它?

【问题讨论】:

How to get the width and height of an android.widget.ImageView?的可能重复 【参考方案1】:

新 Android 开发人员常犯的一个错误是在其构造函数中使用视图的宽度和高度。当调用视图的构造函数时,Android 还不知道视图的大小,因此将大小设置为零。实际尺寸是在布局阶段计算的,该阶段发生在施工之后但在绘制任何东西之前。您可以使用onSizeChanged() 方法在值已知时收到通知,也可以稍后使用getWidth()getHeight() 方法,例如在onDraw() 方法中。

【讨论】:

除了 Farhan 已经提到的内容,您还可以查看 http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html【参考方案2】:

见this

int finalHeight, finalWidth;
final ImageView iv = (ImageView)findViewById(R.id.scaled_image);
final TextView tv = (TextView)findViewById(R.id.size_label);
ViewTreeObserver vto = iv.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() 
public boolean onPreDraw() 
    finalHeight = iv.getMeasuredHeight();
    finalWidth = iv.getMeasuredWidth();
    tv.setText("Height: " + finalHeight + " Width: " + finalWidth);
    return true;
  
);

【讨论】:

【参考方案3】:

如果您第一次获得高度和宽度,则没有可用的图像,因此结果为 0。

请使用此代码:

 setContentView(R.layout.full_screen);

    full_view   = (ImageView)findViewById(R.id.full_view);

    Bundle bundle=getIntent().getExtras();
    byte[] image=   bundle.getByteArray("image");


    Bitmap theImage = BitmapFactory.decodeByteArray(image, 0, image.length);
    Bitmap resized = Bitmap.createScaledBitmap(theImage,width , height, true);

    full_view.setImageBitmap(resized);

    width       =     full_view.getWidth();
    height      =     full_view.getHeight();

【讨论】:

以上是关于如何获取ImageView的高度和宽度?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 javafx imageView 中获取显示图像的宽度/高度?

如何在android中获取显示图像的宽度和高度?

如何动态设置ImageView的宽度高度以及位置

如何更改 ImageView 高度和宽度 [重复]

如何使用相机设置捕获的图像以适合固定高度和宽度的 Imageview

宽度大于高度的位图在 ImageView 中显示为横向