为什么wrap_content比实际像素大小更大?

问题描述 投票:3回答:5

我想了解一些事情。我看到的一个奇怪的事情是,当我将wrap_content放在宽度和高度时,图像大于插入的图像的实际px(像素)大小。为什么会这样?

我的代码与wrap_content

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="false"
    android:src="@drawable/header" />

这就是我的代码与图像的精确像素大小:

 <ImageView
    android:id="@+id/imageView1"
    android:layout_width="378px"
    android:layout_height="155px"
    android:adjustViewBounds="false"
    android:src="@drawable/header" />

如您所见,那就是确切的像素大小:

这是为什么?我认为wrap_content应该将视图包装到内容大小,为什么它在屏幕上更大?

android imageview pixel
5个回答
4
投票

有关支持多个屏幕的非常好的解释,请参阅

http://developer.android.com/guide/practices/screens_support.html

您需要在缩放后将图像放在相应的文件夹中。

例如如果你想要100 * 100的图像然后放置

75*75 in drawable-ldpi for Low density devices

100*100 in drawable-mdpi for Medium density devices

150*150 in drawable-hdpi for High density devices

200*200 in drawable-xhdpi for Extra High density devices


4
投票

如果您确实需要按原样使用图像的像素,并使用屏幕实际像素执行以下操作:

1)创建一个res/drawable-nodpi并在那里移动固定像素的非缩放图像。

2)然后你可以使用wrap_content作为layout_widthlayout_height,图像像素将匹配设备像素,因为dpi没有升级。

来自http://developer.android.com/guide/practices/screens_support.html,nodpi的定义:

所有密度的资源。这些是与密度无关的资源。无论当前屏幕的密度如何,系统都不会缩放使用此限定符标记的资源。


1
投票

wrap_content意味着您希望图像与原始尺寸一样。即如果图像尺寸为200 * 200则显示200 * 200,如果图像尺寸为400 * 400,则显示尺寸为400 * 400。因此,当您使用真实像素对其进行硬编码时,您获得更大图像的原因是因为图像的大尺寸。即图像实际上很大。


0
投票

根据我的经验,我可以说wrap_content总是尽可能利用最大可用尺寸。因此,有时它会拉伸图像,有时会缩小图像的大小。要使用精确的图像,请使用android:scaleType="fitXY"

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="false"
    android:scaleType="fitXY"
    android:src="@drawable/header" />

第2条评论后更新:

根据android文档:


您可以使用精确测量指定宽度和高度,但您可能不希望经常这样做。通常,您将使用这些常量之一来设置宽度或高度:

wrap_content告诉您的视图将自身大小调整为其内容所需的维度

fill_parent(在API级别8中重命名为match_parent)告诉您的视图变得与其父视图组允许的一样大。

通常,不建议使用绝对单位(如像素)指定布局宽度和高度。相反,使用相对测量(如与密度无关的像素单位(dp),wrap_content或fill_parent)是一种更好的方法,因为它有助于确保应用程序在各种设备屏幕大小上正确显示。可接受的测量类型在可用资源文档中定义。


我发现术语大小本身很重要,它会自动调整图像大小。这就是为什么我告诉我,根据我的经验,我发现有时会拉伸图像,有时会缩小图像的大小


0
投票

您需要查看放置图像的位置。如果它在hdpi中它将在屏幕上看起来更大,那么如果它在hdpi时正在使用wrap_content。所以,为了使它成为确切的大小,请将其放入正确的库中。

© www.soinside.com 2019 - 2024. All rights reserved.