为什么imageview中的wrap_content不会根据实际宽度变得更大?

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

我有一个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来扩大它。

android image android-imageview android-resources android-resolution
3个回答
1
投票

首先,我们来谈谈你的形象比例。它的宽度为1280像素,高度为854像素,因此,它的比例为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


0
投票

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


0
投票

这个属性:

android:scaleType="fitCenter"

意味着将保留图像的原始宽高比。 你想要将这个图像与ImageView相匹配:

android:layout_height="100dp"

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

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