用于ImageView的Wrap_contents或DP

时间:2014-12-30 16:28:11

标签: android android-layout

我看到有些人在其布局中使用了Imageview宽度和高度的精确dp测量值,而其他人则使用wrap_contant。

Wrap_content将获取图像大小并相应地显示它。因此,如果它是60px乘60px,那么它在高密度屏幕上看起来会更小,而在低密度屏幕上看起来更大。

虽然使用精确的dp测量值可以说60 dp,但它会在所有屏幕上看起来都相同。

因此,我们不应该一直使用精确的测量而不是wrap_content吗?我在这里遗漏了什么

由于

2 个答案:

答案 0 :(得分:0)

有时wrap_content太小而不是您想要的,或者太大而不是您想要的 所以你可以给出精确的测量结果

如果您想确保您的精确测量值支持多种屏幕尺寸,您可以将它们放在dimens文件中,然后根据正确的屏幕尺寸加载

查看Support Multiple Screen Sizes

例如,如果您创建文件夹calld "values-sw600dp" 并在其中放入一个维度文件,并具有属性

<dimen name="imageSizeWidth">60dp</dimen>

您的图片将定义如下

<ImageView 
   android:layout_width="@dimen/imageSizeWidth"
   android:layout_height="@dimen/imageSizeWidth"

/>

然后它将被加载,如果设备匹配描述&#34;至少600dp的scree宽度&#34; 这是在您的资源中提供其他值文件夹。

如果您没有任何其他值文件夹,则默认情况下会加载

答案 1 :(得分:0)

我认为如果您使用wrap_content,系统将根据屏幕密度(mdpi,hdpi,xhdpi等)从相应的资源文件夹中选择资源,并将使用该资源的px维度。由于屏幕密度资源文件夹(mdpi,hdpi等)可以各自应用于各种屏幕密度(即,mdpi为~160dpi,但在达到下一个密度之前可以少一点或多一点),这意味着图像可能会在不同的屏幕上稍微改变大小如果指定高度和宽度的实际dp值,则确保图像将缩放以在所有设备上保持相同的物理大小。