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


126

我有一个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);

还有其他想法吗?


尽管这是一个稍有不同的问题,但是此答案应该会对您有所帮助。
弗雷德里(Fredley)2011年

Answers:


317

以语法方式更改:

imgview.setScaleType(ScaleType.FIT_XY);

要么

从xml更改使用:

 android:scaleType="fitXY"

26
我知道这就是您想要的,但是对于您关心纵横比的图像,这将使它扩展。
Artem Russakovskii

在ScrollView中实现ImageView的奇迹。即使方面保持正确。
JNissi 2012年

10
可以在布局xml中定义相同的内容:android:scaleType =“ fitXY”
Sathesh 2014年

9
为了使图像填充整个区域,并保持了良好的宽高比使用v.setAdjustViewBounds(true); v.setScaleType(ImageView.ScaleType.CENTER_CROP);
马尔科·弗洛里安

1
像魅力一样工作
dave o grady

119

输入您的布局android:scaleType="fitXY"
PS 的xml文件:这适用于设置图像的情况,android:src="..."而不是android:background="..."默认情况下将背景设置为拉伸并适合视图的情况。


后台操作无助于我解决问题,我做错了什么吗?请看看:stackoverflow.com/questions/14164473/...
Dheeraj巴斯卡尔

1
如果您对图像的宽度进行硬编码并希望高度缩放,则不会考虑纵横比
Akshat Agarwal 2013年

那我怎样才能使它适合整个屏幕呢?我希望它仍然是成比例的
Ruchir Baronia 2015年

+1告诉它适用于android:src =“ ...”,而不是android:background =“ ...”,这非常重要
DragonFire,

20

用这个:

ImageView.setAdjustViewBounds(true);

4
这与有效结合在一起android:scaleType="fitXY"。谢谢
smac89

@ smac89这些组合和仅使用FIT_CENTER有什么区别?不应该使用FIT_CENTER吗?
Jenix

@Jenix,请注意,自从我上次接触Android以来已经有一段时间了,但是我相信这样做的原因fitXY是为了使图像按比例拉伸以适合其所设置的框架/视图。使用FIT_CENTER类似声音的声音只会放置图像在视图的中心,但不填充视图。我可能是错的,但是您可以尝试使用其中一种方法来找出有效的方法
smac89'1

@ smac89在询问之前,我已经测试了它们两个,并且效果相同。我很好奇这个原因,但现在觉得您不了解FIT_CENTER,就像我不知道您让我知道的组合一样。:)
Jenix

9

如果使用,android:scaleType="fitXY"则必须指定

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

如果使用wrap_content,它将无法满足您的需求

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

7

可接受的答案是完美的,但是,如果您想从xml中进行操作,则可以使用 android:scaleType="fitXY"


2

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



-11

尝试使用:

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

这将使您的imageview以正确的比例适合屏幕。


12
“ imageview.setFitToScreen(true);” - 那是什么?一些未记录的方法?
玛拉基亚斯2014年

我正在使用eclipse,因此无法编译:imageview.setFitToScreen(true)
学习者

5
android中没有这样的方法。
NightFury 2014年

也许他的意思是setFitsSystemWindows()
ban-geoengineering 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.