正在裁剪Android ImageView

正在裁剪Android ImageView,android,imageview,scale,Android,Imageview,Scale,首先,这里有一个图表来说明我的问题: 在左图中,您可以看到它的外观。这也是AndroidStudio在预览中显示的方式。但是如果我在模拟器上运行它,它会裁剪图像,只剩下深绿色部分。(右图) 父视图: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="

首先,这里有一个图表来说明我的问题:

在左图中,您可以看到它的外观。这也是AndroidStudio在预览中显示的方式。但是如果我在模拟器上运行它,它会裁剪图像,只剩下深绿色部分。(右图)


父视图:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".menu">

我尝试了不同的scaleType,但没有任何东西能给出我想要的结果。 这不是我第一次使用ImageView,但是第一次我自己解决不了这个问题

如果删除“adjustViewBounds”,预览将显示与设备/仿真器相同的结果。以防那是对某人的暗示


编辑:我创建了标题的第二个版本,其大小是标题的两倍。现在它与“fitXy”和“adjustViewBound(true)”一起工作。但是为什么呢?原始图像的高度为512px,这应该足以使adjustViewBounds保持高宽比。

听起来您希望将中心置于内部:

android:scaleType="centerInside"
public static final ImageView.ScaleType中心\u内部

在API级别1中添加了均匀缩放图像(保持图像的 高宽比),使图像的两个维度(宽度和高度) 将等于或小于视图的相应尺寸 (减去填充)。然后图像在视图中居中。从XML中,使用 此语法为:android:scaleType=“centerInside”

同时


问题可能是adjustViewBounds不会将ImageView的大小增加到可绘制图形的自然尺寸之外。

android:scaleType=“centerCrop”
将为您提供您在右侧看到的结果,因此将其删除,这样它就不会进行任何缩放。它只覆盖了屏幕宽度的一半。CENTER\u INSIDE怎么了?centerInside给了我完全相同的结果,就好像我根本不使用鳞片一样。因此,图像将只覆盖屏幕宽度的一半。那么fitXY呢,图像实际上就是那个绿色框吗?为什么不设置一个背景色或使用一个9-patch绘图板呢?我已经试过了。使用centerInside时,它不会缩放图像。它只有屏幕宽度的一半。很有趣。。两个维度中的较大者是什么,宽度还是高度?你能发布真实的图像吗?布局xml中的父视图呢?我已将父视图添加到我的问题中。也许我可以稍后发布原始图像,目前我没有访问权。我创建了标题的第二个版本,它的大小是原来的两倍。现在它与“fitXy”和“adjustViewBound(true)”一起工作。但是为什么呢?原始图像的高度为512px,这应该足以使adjustViewBounds保持纵横比。
android:scaleType="centerInside"