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

时间:2013-12-23 17:59:46

标签: android android-layout imageview scrollview image-scaling

我已经尝试过尽可能多的scaleTypefillViewport以及adjustViewBoundslayout_*的排列,因为我能想到并且没有一个能按我的意愿行事。它们要么填满屏幕,要么丢失纵横比(fillXY),切掉图像的一部分(centerCrop),或缩小图像以使其不填满屏幕宽度( centerInside, fitStart, fitCenter, center, matrix)。

以下是一个具体的例子:

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

我希望ScrollView能够填满整个屏幕 我希望ImageView缩放图像,使其填满屏幕宽度(将源图像从222宽拉伸到480宽)。
我希望ImageView保留源图像的宽高比,这意味着它的高度必须从470像素缩放到大约1016像素。 由于它不适合屏幕(它只有800像素高),ScrollView应该启动。默认情况下,图像的顶部应显示,ScrollView应允许向下滚动以查看图像的其余部分。

这只是一个例子。理想情况下,无论图像大小和屏幕尺寸如何,我都希望这样做。

如果您知道在XML布局中完成所有操作的方法,则可获得额外的荣誉。

之前你们都像一堆砖头(或手机上的砖头)一样对我说话,我知道这个网站上有几个类似的问题(见hereherehereherehere)但是它们未得到答复或答案是不可接受的(“使用fitXY”,它不保留纵横比,或者需要指定精确的像素宽度/高度在ImageView中,它不是问题的通用解决方案)。很高兴得到一个可靠的答案,记录在那里。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,希望能帮助别人。

我找到了一个简单的功能性答案hereAspectRatioImageView类适用于所有XML扩展尝试失败的地方。