为什么基于实际宽度,imageview中的wrap_content不会变得更大?

时间:2019-04-13 09:45:13

标签: android image android-imageview android-resources android-resolution

我有一个ImageView,其中有:

android:layout_height="100dp"   
android:layout_width="wrap_content"
android:scaleType="fitCenter" 
android:adjustViewBounds="true"   

我看到的是,如果我设置的图像具有尺寸(基于我的电脑的信息)1280px854
如果我在电脑上打开它,图像看起来会很大。
尽管我已设置ImageView,但在我的wrap_content中,该图像还是很小的。
我不确定我如何运作。例如。 1280/4 = 320dpi(xxxhdpi),但对于wrap_content,图像视图的宽度不如320dpi
需要说明的是:我试图理解为什么它会那样工作,而不能通过wrap_content使其变大。

3 个答案:

答案 0 :(得分:1)

首先,让我们谈谈图像的比例。它的宽度为1280px,高度为854px,因此其比例为 1280/854≈3/2

第二,您已经将ImageView的高度设置为100dp。如果未指定宽度,则android将尽力感知比率(3/2)并计算宽度:

ratio = width/height
3/2 = width/100
width = 150dp

请注意,它给了我们dp,如果我们改为插入px(针对高度),它将给我们px。

第三,现在我们有了图像的大小(150dp x 100dp),width='wrap_content'的imageView的宽度将对应于150dp

答案 1 :(得分:0)

解决方案是设置android:layout_height="wrap_content",因为layout_height中的100dp限制了图像宽度的“增长”。

答案 2 :(得分:0)

此属性:

android:scaleType="fitCenter"

表示将保留图像的原始宽高比。
您想用ImageView使该图像适合:

android:layout_height="100dp"

因此,由于您限制了图像的高度,因此,如果图像的高度大于100dp,它将缩小到该高度,并且其宽度将按比例缩小。