Android 为什么imageview中的wrap_内容不会根据实际宽度使其变大?
我有一个Android 为什么imageview中的wrap_内容不会根据实际宽度使其变大?,android,image,android-imageview,android-resources,android-resolution,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\
ImageView
,它有:
android:layout_height="100dp"
android:layout_width="wrap_content"
android:scaleType="fitCenter"
android:adjustViewBounds="true"
我看到的是,如果我设置了一个尺寸为的图像(基于我电脑的信息)1280px854
如果我在电脑中打开它,图像看起来会很大。
在我的
ImageView
中,相同的图像很小,尽管我已经设置了wrap\u content
我不知道这是怎么回事。例如,1280/4=320dpi(xxxhdpi),但对于具有
wrap_内容的
图像视图没有as宽度320dpi
澄清一下:我试图理解为什么它是这样工作的,而不是通过
wrap\u content
使它更大。解决方案是设置android:layout\u height=“wrap\u content”
,因为版面高度的100dp限制了图像宽度的“增长”。这个问题:
android:scaleType="fitCenter"
表示将保留图像的原始纵横比您希望在
ImageView
中为该图像添加以下内容:
android:layout_height="100dp"
因此,由于您限制图像的高度,如果它大于100dp,它将收缩到该高度,其宽度将成比例收缩。
首先,让我们讨论图像的比率。它宽1280px,高854px,因此其比例1280/854≈ 3/2 其次,您已经将
图像视图的高度设置为100dp
。如果未指定宽度,则android将尽最大努力感知比率(3/2),并计算宽度:
ratio = width/height
3/2 = width/100
width = 150dp
注意,它给了我们dp
,如果我们插入px
(高度),它会给我们px
第三,现在我们有了图像的大小(150dp x 100dp)和width='wrap_content'
图像视图的宽度将对应于150dp您实际使用的是高度还是布局高度(宽度相同)?您已经设置了高度,因此,宽度的wrap content将保留图像的比率(x,y)@丹尼尔贝莱扎:很抱歉给你带来困惑。我更新了post@Mitch:是否有一些公式,以便我们知道该比率的最大宽度是多少?当您将指定的高度和宽度设置为wrap\u content
时,宽度已经表示该比率的最大宽度。如果你对这个数字感兴趣,那么:宽度=高度*(1280*854)。在这种情况下,这不是我要问的。我对当前显示没有问题。我在问它是如何工作的这不是我在问的。我对当前显示没有问题。我在问它是如何工作的,正如我在回答中提到的:图像的原始纵横比将被保留这就是fitCenter
所做的。这确实很有帮助。但是,我们能知道在同时保持该比率的情况下,宽度可以扩展多少吗?成比例地意味着,如果高度是原始高度的1/3,那么同样的宽度也将适用,因为您没有对宽度施加任何约束。请参阅以下链接:在您之前的评论中,您编写了width=height*(1280*854)那应该是宽度=高度*(1280/854)。
?