我已经尝试过尽可能多的scaleType
和fillViewport
以及adjustViewBounds
和layout_*
的排列,因为我能想到并且没有一个能按我的意愿行事。它们要么填满屏幕,要么丢失纵横比(fillXY
),切掉图像的一部分(centerCrop
),或缩小图像以使其不填满屏幕宽度( centerInside, fitStart, fitCenter, center, matrix
)。
以下是一个具体的例子:
源图像为222x470像素 仿真器屏幕纵向为480x800hdpi。
我希望ScrollView
能够填满整个屏幕
我希望ImageView
缩放图像,使其填满屏幕宽度(将源图像从222宽拉伸到480宽)。
我希望ImageView
保留源图像的宽高比,这意味着它的高度必须从470像素缩放到大约1016像素。
由于它不适合屏幕(它只有800像素高),ScrollView
应该启动。默认情况下,图像的顶部应显示,ScrollView
应允许向下滚动以查看图像的其余部分。
这只是一个例子。理想情况下,无论图像大小和屏幕尺寸如何,我都希望这样做。
如果您知道在XML布局中完成所有操作的方法,则可获得额外的荣誉。
之前你们都像一堆砖头(或手机上的砖头)一样对我说话,我知道这个网站上有几个类似的问题(见here,here, here,here和here)但是它们未得到答复或答案是不可接受的(“使用fitXY”,它不保留纵横比,或者需要指定精确的像素宽度/高度在ImageView中,它不是问题的通用解决方案)。很高兴得到一个可靠的答案,记录在那里。