繁体   English   中英

缩放ImageView以水平填充屏幕并在ScrollView中垂直滚动(如果需要)

[英]Scale an ImageView to fill screen horizontally and scroll (if necessary) vertically in ScrollView

我已经试过了我能想到的许多scaleTypefillViewportadjustViewBoundslayout_*排列方式,但它们都没有满足我的要求。 它们要么填满屏幕,要么失去纵横比( fillXY ),切掉一部分图像( centerCrop ),或者按比例缩小图像,使其不填满屏幕宽度( centerInside, fitStart, fitCenter, center, matrix )。

这是一个具体示例:

源图像为222x470像素。
仿真器屏幕纵向为480x800hdpi。

我希望ScrollView充满整个屏幕。
我希望ImageView缩放图像,以使其填满屏幕的宽度(将源图像从222宽拉伸到480宽)。
我希望ImageView保留源图像的长宽比,这意味着它的高度必须从470像素缩放到大约1016像素。
由于那将无法显示在屏幕上(只有800像素高),因此应该插入ScrollView 。默认情况下,应该显示图像的顶部,并且ScrollView应该允许向下滚动以查看图像的其余部分。

这只是一个例子。 理想情况下,无论图像大小和屏幕大小如何,我都希望它能正常工作。

如果您知道在XML布局中完成全部操作的方法,则可以额外获得信贷。

在你们都像一吨砖头(或砖头的手机?)跌落到我身上之前,我知道这个站点上有几个类似的问题(请参阅此处此处此处此处此处 ),但它们要么是未回答或答案不可接受(“使用fitXY”,这不保留宽高比,或要求在ImageView中指定确切的像素宽度/高度,这不是该问题的通用解决方案)。 对此文档有一个可靠的答案是很高兴的。

回答我自己的问题,希望对其他人有所帮助。

我在这里找到了一个简单的功能性答案。 AspectRatioImageView类在我所有XML缩放尝试均失败的地方工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM