安卓ImageView修复图片大小问题

56

我有一个Android应用程序,在其中有一个ImageView,我需要保持其大小不变,可能需要将各种不同大小的图像放入此ImageView中。

我只需要确保所有图像都适合ImageView,如果图像较小,则应增大其尺寸,如果图像较大,则应减小其尺寸。

非常感谢您花费时间阅读。


1
发布你尝试过的代码。 - Praveenkumar
7个回答

88

使用dpfill_parent来固定ImageView的大小,并将android:scaleType设置为fitXY


56
在你的情况下,你需要进行以下操作:
  1. 修复ImageView的大小。你需要使用dp单位,这样它在所有设备上看起来都一样。
  2. android:scaleType设置为fitXY
以下是一个示例:
<ImageView
    android:id="@+id/photo"
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:src="@drawable/iclauncher" 
    android:scaleType="fitXY"/>

有关ImageView的scaleType的更多信息,请参阅开发者网站


1
为什么要使用 fitXY?而不是使用 minHeightminWidth 代替 layout_x - Yousha Aleayoub
我在XML布局中已经将所有内容都安排好了,但是即使替换的图片大小相同,setImageResource仍然破坏了缩放。添加scaleType="fitXY"完美地解决了这个问题! - Dave Hubbard
对我有效的是scaleType="fitCenter",以确保图像的x/y比例得以保持。 - Lech Migdal

17

尝试这个

ImageView img
    Bitmap bmp;
    int width=100;
    int height=100;
    img=(ImageView)findViewById(R.id.imgView);
    bmp=BitmapFactory.decodeResource(getResources(),R.drawable.image);//image is your image                                                            
    bmp=Bitmap.createScaledBitmap(bmp, width,height, true);
    img.setImageBitmap(bmp);

或者: 如果您希望将完整的图像尺寸加载到内存中,那么可以使用

<ImageView
    android:id="@+id/img"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:src="@drawable/image" 
    android:scaleType="fitXY"/>

7

您也可以尝试这个,假设您想制作一个背景图像按钮,并且您有一个“500x500 png”并希望它适合小的按钮大小。

使用dp来固定ImageView的大小。

将以下代码添加到您的Imageview中。

android:scaleType="fitXY"

例如:

<ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:id="@+id/imageView2"
        android:src="@drawable/Backicon"
        android:scaleType="fitXY"
        />

1

我遇到了同样的问题,这个帮助了我。

<ImageView
    android:id="@+id/image"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:scaleType="fitXY"
    />

0

除非您添加layout_widthlayout_height属性,否则需要在XML中添加android:scaleType并设置fitXY
示例:
android:scaleType="fitXY"

如果您想以编程方式添加,
示例:
youriv.setScaleType(ImageView.ScaleType.FIT_XY);


0
目前还没有明确的答案。每次加载图片时,ImageView都不会根据图片大小进行调整。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接