在ImageView中设置图像宽度和高度

时间:2011-07-25 14:40:12

标签: android image imageview

无论我尝试什么,我都无法设置从soap服务传递到我的android模拟器的图像的宽度和高度。我正在使用ImageView,如下所示:

            byte[] bloc = Base64.decode(result, Base64.DEFAULT);         
            Bitmap bmp = BitmapFactory.decodeByteArray(bloc,0,bloc.length);    
            ImageView image = new ImageView(this);
            image.setImageBitmap(bmp);
            image.setLayoutParams(
                    new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.WRAP_CONTENT, 
                            LinearLayout.LayoutParams.WRAP_CONTENT)); 
            image.getLayoutParams().height = 100;
            image.getLayoutParams().width = 100;
            setContentView(image);

在上面的代码中,我试图手动设置宽度为259像素,高度为194像素的jpeg图像的宽度和高度。

/res/layout/main.xml看起来像

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:weightSum="1" android:id="@+id/llid">
</LinearLayout>

在尝试下面的答案中的一些方法之后,我在模拟器上看到以下内容

enter image description here

我甚至不确定我采取的方法是否正确。我在搜索论坛时找到的大多数其他解决方案对我不起作用。任何建议都会很棒。

4 个答案:

答案 0 :(得分:10)

试试这样。使用yourBitmap.getWidth().getHeight()

  image.setLayoutParams(
              new LinearLayout.LayoutParams(
                     bmp.getWidth(), 
                     bmp.getHeight())); 

编辑:

现在你已经为ImgView设置了LP,你要做的第一件事就是将它添加到布局中

LinearLayout ll = (LinearLayout)findViewById(R.layout.llid);

现在,您可以直接添加视图,也可以将参数分开,并将其添加到.addView(view, params).addView(View);您的电话中。

所以你做了

ll.addView(image);

希望它有效

答案 1 :(得分:3)

如果你改变了这一点会发生什么:

new LinearLayout.LayoutParams(
   LinearLayout.LayoutParams.WRAP_CONTENT, 
   LinearLayout.LayoutParams.WRAP_CONTENT)); 

要:

new LinearLayout.LayoutParams(width, height);

..并且是放在LinearLayout中的对象吗?

答案 2 :(得分:1)

我不确定你手动设置图像视图的范围,但是如果它是在为给定的ImageView调用onMeasure之前,那么这就是为什么它尊重XML布局参数。

您可以尝试为ImageView重载onMeasure方法,并调用setMeasuredDimension(100,100)在那里手动设置。

答案 3 :(得分:-1)

试试这个

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(width,height);
imageView.setLayoutParams(params);