ImageView,为什么大小不同?

6

首先,我知道很多人都问过同样的问题,但这个问题与其他问题几乎相同,但我还有一些更多的问题。

我的图片大小为48px x 48px,如果我将此图像设置到ImageView中,

layout_width="wrap_content"
layout_height="wrap_content"

然后图片看起来更大,但如果我使用以下固定大小,它会变小。
layout_width="48dp"
layout_height="48dp"

我认为使用48dp,图片显示应该是正常的(不会出现像素化的情况),但如果使用wrap_content,图片为什么会变大呢?如果使用wrap_content后图片大小正确,那么使用dp有什么意义(因为它会使图片变小)?


你如何将图片设置到imageView中? - Triode
2
顺便提一下,dppx不是同一回事。 - Boris Strandjev
你可能将背景设置为图像源,这可能是它被拉伸的原因。 - Triode
4个回答

6
48dp(或48dip)代表“密度独立像素”。这意味着在Android屏幕上显示的图像的物理大小应该是相同的,无论屏幕密度和大小如何。为了支持这一点,Android根据屏幕密度调整实际显示的像素大小。不同设备上的您的发现大小会有所不同。
将dp单位转换为屏幕像素的公式为:pixels = dps * (density / 160)。例如,在240 dpi的屏幕上,1dp等于1.5个物理像素。强烈建议使用dp单位来定义应用程序的UI,以确保在不同屏幕上正确显示您的UI。

3
这可能是因为您没有明确设置scaleType造成的。请在XML中按照以下方式设置scaleType,就可以解决问题:
android:scaleType="center"

是的,它需要scaleType。我使用了scaleType="fitXY"。 - xmen
如果我的回答对您有帮助,请随意使用旁边的空白复选框将其标记为已接受。 - Shade

1

试试这个

<ImageView
    android:id="@+id/seprator2"
    layout_width="48dp"
    layout_height="48dp"
    android:scaleType="fitXY"
    android:src="@drawable/your_image" />

如果图像仍然显示很小,则说明您的图像周围必须包含alpha。

0
如果图像比视图大,则可以使用以下方法进行缩放:
android:scaleType="center"

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