android:在imageview中拉伸图像以适应屏幕

Posted

技术标签:

【中文标题】android:在imageview中拉伸图像以适应屏幕【英文标题】:android: stretch image in imageview to fit screen 【发布时间】:2011-06-07 18:26:53 【问题描述】:

我有一个imageview,其高度和宽度设置为fill_parent,而linearlayout 设置了相同的值。所以我想这应该将我的图像设置为适合屏幕。但它只适合 80%(横向模式下的顶部和底部边距)。

我尝试了以下代码但没有成功:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();
int height = display.getHeight();

imgView.setMinimumWidth(width);
imgView.setMinimumHeight(height);

imgView.setMaxWidth(width);
imgView.setMaxHeight(height);

还有其他想法吗?

【问题讨论】:

虽然这是一个稍微不同的问题,this answer 应该可以帮助你。 【参考方案1】:

以编程方式更改使用:

imgview.setScaleType(ScaleType.FIT_XY);

从xml改用:

 android:scaleType="fitXY"

【讨论】:

我知道这就是您想要的,但对于您关心宽高比的图像,这会拉长它。 在 ScrollView 中为 ImageView 创造奇迹。连方面都保持正确。 同样可以在布局xml中定义,android:scaleType="fitXY" 要使图像填满所有区域并保持良好的纵横比,请使用v.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP); 像魅力一样工作【参考方案2】:

在你的布局的xml文件中给出android:scaleType="fitXY" P.S :这适用于使用android:src="..." 而不是android:background="..." 设置图像的情况,因为背景默认设置为拉伸并适合视图。

【讨论】:

后台的东西没有帮我解决问题,我做错了什么吗?请看:***.com/questions/14164473/… 如果您对图像的宽度进行硬编码并希望缩放高度,这不会考虑纵横比 那我怎样才能让它适合整个屏幕呢?我希望它仍然是成比例的 +1 表示它适用于 android:src="..." 而不是 android:background="..." 这很重要【参考方案3】:

尝试使用:

imageview.setFitToScreen(true);
imageview.setScaleType(ScaleType.FIT_CENTER);

这将使您的图像视图以正确的比例适合屏幕。

【讨论】:

"imageview.setFitToScreen(true);" - 那是什么?一些未记录的方法? 我正在使用 eclipse,但无法编译:imageview.setFitToScreen(true) android中没有这样的方法。 也许他的意思是setFitsSystemWindows() ??【参考方案4】:

使用这个:

ImageView.setAdjustViewBounds(true);

【讨论】:

这与android:scaleType="fitXY" 结合使用是有效的。谢谢 @smac89 这些组合与仅使用 FIT_CENTER 有什么区别?不应该使用 FIT_CENTER? @Jenix,请注意,我上次接触 Android 已经有一段时间了,但我相信这样做的原因 fitXY 是为了使图像按比例拉伸以适合设置的框架/视图in. 使用FIT_CENTER 听起来它只会将图像放在视图的中心,但不会填满视图。我可能是错的,但您可以尝试其中任何一个来找出有效的方法 @smac89 在询问之前我已经对它们进行了测试,并且效果相同。我很好奇原因,但现在认为您不知道 FIT_CENTER,就像我不知道您告诉我的组合一样。 :)【参考方案5】:

接受的答案是完美的,但是如果你想从 xml 中做,你可以使用android:scaleType="fitXY"

【讨论】:

【参考方案6】:

我在 Xml 文件中使用了这个 android:scaleType="fitXY" 代码。

【讨论】:

【参考方案7】:

只需将您的 ImageView 高度和宽度更改为 wrap_content 并使用

exampleImage.setScaleType(ImageView.ScaleType.FIT_XY);

在您的代码中。

【讨论】:

【参考方案8】:

如果你使用android:scaleType="fitXY",那么你必须指定

android:layout_width="75dp"android:layout_height="75dp"

如果使用 wrap_content 它不会延伸到你需要的东西

<ImageView
android:layout_
android:layout_
android:id="@+id/listItemNoteImage"
android:src="@drawable/MyImage"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="12dp"
android:scaleType="fitXY"/>

【讨论】:

【参考方案9】:

对于 XML 安卓

android:src="@drawable/foto1"
android:layout_
android:layout_
android:scaleType="centerCrop"

【讨论】:

以上是关于android:在imageview中拉伸图像以适应屏幕的主要内容,如果未能解决你的问题,请参考以下文章

在 imageview 中使用时从相机或画廊拍摄的图片其方向发生变化,有时在 Android 中会垂直拉伸

保存在 ImageView 中时,从自定义相机获取图像会被拉伸

Android:拉伸和裁剪图像(但仍然是纵横比)

Android ImageView 自动拉伸

Android中ImnageView 中如何让图片拉伸显示?

ImageView图片适应屏幕宽度,等比例拉伸