ImageView,为什么大小不一?

时间:2013-03-19 14:01:15

标签: java android

首先,我知道很多人都问了同样的问题,但是这个问题几乎相同,但我还有更多问题。

我的图像为48px x 48px,所以如果我在ImageView中设置此图像

layout_width="wrap_content"
layout_height="wrap_content"

然后图像看起来更大,但如果我使用以下固定大小,它会变小

layout_width="48dp"
layout_height="48dp"

我认为它现在正好显示(不是像素化的?)48dp,但是如果我使用wrap_content它会变大?如果通过wrap_content的图像大小是正确的,那么使用dp是什么意思(如果它使图像变小)?

4 个答案:

答案 0 :(得分:6)

48dp(或48dip)代表“密度独立像素”。这意味着无论屏幕密度和大小如何,Android屏幕上显示的图像的物理尺寸都应相同。为了支持这一点,Android会根据屏幕密度调整显示的实际像素大小。您对不同尺寸的调查结果因设备而异。

dp单位到屏幕像素的转换为:pixels = dps * (density / 160)。例如,在240 dpi屏幕上,1dp将等于1.5个物理像素。强烈建议使用dp单位来定义应用程序的UI,以确保在不同屏幕上正确显示UI。

答案 1 :(得分:3)

这可能是因为您没有明确设置scaleType。在XML中设置scaleType如下,你应该没问题:

android:scaleType="center"

答案 2 :(得分:1)

试试这个

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

如果它仍然显示小,那么你的图像必须包含围绕它的alpha。

答案 3 :(得分:0)

如果图像大于视图,则可以使用以下方法对其进行缩放:

android:scaleType="center"