我有一个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
来扩大它。
首先,我们来谈谈你的形象比例。它的宽度为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
解决方案是设置android:layout_height="wrap_content"
,因为layout_height中的100dp限制了图像宽度的“增长”。
这个属性:
android:scaleType="fitCenter"
意味着将保留图像的原始宽高比。
你想要将这个图像与ImageView
相匹配:
android:layout_height="100dp"
因此,由于约束了图像的高度,如果它大于100dp,它将缩小到该高度,并且其宽度将按比例缩小。