为什么 imageview 中的 wrap_content 没有根据实际宽度使它变大?

Why does the wrap_content in imageview not make it much bigger based on the actual width?

我有一个 ImageView 有:

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

我看到的是,如果我设置一个具有 as 尺寸的图像(基于我电脑的信息)1280px854
如果我在我的电脑上打开它,图像看起来很大。
尽管我设置了 wrap_content.
,但相同的图像在我的 ImageView 中很小 我不确定我明白这是怎么回事。例如。 1280/4 = 320dpi (xxxhdpi) 但对于 wrap_content 图像视图没有宽度 320dpi
澄清一下:我试图理解为什么它会这样工作并且不会用 wrap_content.

让它变大

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

这个属性:

android:scaleType="fitCenter"

表示将保留图像的原始纵横比。
您想将该图像与 ImageView 匹配:

android:layout_height="100dp"

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

首先,让我们谈谈您的图片比例。它宽 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