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

时间:2012-05-02 10:32:41

标签: android imageview

在我的代码中,我的XML布局中有一个Image View,我在代码中不断更改源图像。现在我想知道每次生成图像的宽度和高度。

我尝试使用getWidth()getHeight(), getMeasuredWidth(),getMeasuredHeight(),但它们都返回0。

我怎么能得到这个?

7 个答案:

答案 0 :(得分:42)

您在ImageView上调用getWidth()getHeight()的位置?如果您在活动中致电onCreate(),则无法使用。您需要等待附加活动窗口,然后在ImageView上调用getWidth() and getHeight()。您可以尝试从活动的getWidth() and getHeight()方法中调用onWindowFocusChanged()

@Override
public void onWindowFocusChanged(boolean hasFocus){
    int width=imageView.getWidth();
    int height=imageView.getHeight();
}

答案 1 :(得分:14)

试试这个

 ImageView iv=(ImageView)findViewById(R.id.image);
 ViewTreeObserver vto = iv.getViewTreeObserver();
    vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
        public boolean onPreDraw() {
           finalHeight = iv.getMeasuredHeight();
           finalWidth = iv.getMeasuredWidth();
           Log.e("hilength","Height: " + finalHeight + " Width: " + finalWidth);
            return true;
        }
    });

答案 2 :(得分:4)

试试这段代码

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() {
        iv.getViewTreeObserver().removeOnPreDrawListener(this);
        finalHeight = iv.getMeasuredHeight();
        finalWidth = iv.getMeasuredWidth();
        tv.setText("Height: " + finalHeight + " Width: " + finalWidth);
        return true;
    }
});

它真的有用......

答案 3 :(得分:4)

如果您将ImageView设置为drawable,并且ImageView的高度和宽度类型为WRAP_CONTENT,即使您从onCreate()

int height = imageView.getDrawable().getIntrinsicHeight();
int width = imageView.getDrawable().getIntrinsicWidth();

答案 4 :(得分:1)

引用图像对象的方式是错误的。这就是为什么你一直给零。首先从imageview创建一个位图对象,然后从中获取宽度和高度。

从凸轮拍摄图像时,我会执行以下操作,它就像一个魅力。

Bitmap image2 = (Bitmap) data1.getExtras().get("data");
double width = Double.valueOf(image2.getWidth());
Log.v("WIDTH", String.valueOf(width));
double height = Double.valueOf(image2.getHeight());
Log.v("height", String.valueOf(height));

希望它对你有所帮助。

答案 5 :(得分:1)

首先,您必须将图像转换为mutablebitmap并尝试获取图像的宽度和高度,这主要是为了解决您的问题。

    Bitmap Rbitmap = Bitmap.createBitmap(bitmap).copy(
                    Config.ARGB_4444, true);

Rbitmap.getWidth();
Rbitmap.getheight();

答案 6 :(得分:1)

试试这个解决方案:

var userContent = Vue.extend({
      template: `

      <div class="LayersMenuSectionContent" v-if="userContent.rasters_previews_list.data.length > 0">
           <!-- Display only if  userContent.rasters_previews_list.data.length > 0 -->

           <ul v-for="img in rasters_previews_list">
             {{img.id}}
             <input type="checkbox" /> Layer 5 <br>
           <ul>           
       </div>

          `,
        data: function ()  {
          return {
            rasters_previews_list: [{id:'aa'},{id:'aa'}]
          }

          },

          ready: function()
          { 

          }

});