Android 移除ImageView自动调整大小
我想在我的屏幕设备上放置一个大Y边距的和ImageView,这意味着图像的一部分将脱离屏幕,然后图像将被裁剪 问题是Android一直在缩放图像,这样它就可以放在屏幕上了,但我不希望这样,我希望图像被裁剪 如何强制裁剪ImageView而不调整其大小 另外,我尝试了所有可能的ScaleType属性,但没有一个适合我 代码:Android 移除ImageView自动调整大小,android,scaling,android-imageview,crop,Android,Scaling,Android Imageview,Crop,我想在我的屏幕设备上放置一个大Y边距的和ImageView,这意味着图像的一部分将脱离屏幕,然后图像将被裁剪 问题是Android一直在缩放图像,这样它就可以放在屏幕上了,但我不希望这样,我希望图像被裁剪 如何强制裁剪ImageView而不调整其大小 另外,我尝试了所有可能的ScaleType属性,但没有一个适合我 代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:l
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="200dp"
android:background="@drawable/my_image"
android:scaleType="centerCrop"
/>
</RelativeLayout>
尝试用android:src
替换android:background
您的代码的第一个问题是您使用了:
android:background="@drawable/my_image"
而不是:
android:src="@drawable/my_image"
(在后台,所有scaleType选项都不起作用)
现在,如果这仍然没有帮助,您可能必须使用scaleType=“matrix”,然后简单地创建一个矩阵来完成所需的工作。例如,假设您希望:
- 保持图像的比例
- 缩放图像,使宽度参数等于X(例如:X可以是屏幕的宽度)
- 使图像的顶部可见(以便裁剪图像的底部)-我假设这就是为什么centerCrop可能不适合您的原因
ImageView imgView = (ImageView)findViewById(R.id.my_image_view);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.my_image);
Matrix matrix = new Matrix();
// Let's assume X = 400
float scale = ((float) 400) / bitmap.getWidth();
matrix.setScale(scale, scale);
imgView.setImageMatrix(matrix);
并记住在xml文件中进行必要的更改。等待。中心裁剪应保持图像的正常大小,而不进行任何缩放。请把代码贴出来。我刚刚在我的问题中添加了一些代码。中心作物不适合我,谢谢。图像底部被正确裁剪,但图像顶部也被裁剪,这很奇怪。这是centerCrop的预期行为。对于您尝试执行的操作,这可能会对您有所帮助:“我认为应该将其放入具有精确宽度/高度值的框架布局中(在裁剪之前指定最大图像大小)。然后在图像视图上,指定布局\重力=右侧,并将宽度/高度指定为包裹内容。”