经常被问到,从来没有回答过(至少不是以可重复的方式).
我有一个图像视图,其图像小于视图.我想将图像缩放到屏幕的宽度,并调整ImageView的高度以反映图像的比例正确高度.
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
Run Code Online (Sandbox Code Playgroud)
这导致图像以其原始尺寸(小于屏幕宽度)为中心,边缘为边缘.不好.
所以我补充道
android:adjustViewBounds="true"
Run Code Online (Sandbox Code Playgroud)
同样的效果,没有好处.我补充道
android:scaleType="centerInside"
Run Code Online (Sandbox Code Playgroud)
同样的效果,没有好处.我换centerInside了fitCenter.同样的效果,没有好处.我换centerInside了centerCrop.
android:scaleType="centerCrop"
Run Code Online (Sandbox Code Playgroud)
现在,最后,图像缩放到屏幕的宽度 - 但在顶部和底部裁剪!所以我改变了centerCrop对fitXY.
android:scaleType="fitXY"
Run Code Online (Sandbox Code Playgroud)
现在,图像缩放到屏幕的宽度,但没有在y轴上缩放,导致图像失真.
删除android:adjustViewBounds="true"无效.android:layout_gravity如其他地方所建议的,添加一个也没有效果.
我尝试过其他组合 - 无济于事.所以,请有人知道:
如何设置ImageView的XML来填充屏幕的宽度,缩放较小的图像以填充整个视图,显示具有宽高比的图像而不会失真或裁剪?
编辑:我也尝试设置任意数字高度.这仅对centerCrop设置有影响.它会根据视图高度垂直扭曲图像.