Android 移除ImageView自动调整大小

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

我想在我的屏幕设备上放置一个大Y边距的和ImageView,这意味着图像的一部分将脱离屏幕,然后图像将被裁剪

问题是Android一直在缩放图像,这样它就可以放在屏幕上了,但我不希望这样,我希望图像被裁剪

如何强制裁剪ImageView而不调整其大小

另外,我尝试了所有可能的ScaleType属性,但没有一个适合我

代码:

<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的预期行为。对于您尝试执行的操作,这可能会对您有所帮助:“我认为应该将其放入具有精确宽度/高度值的框架布局中(在裁剪之前指定最大图像大小)。然后在图像视图上,指定布局\重力=右侧,并将宽度/高度指定为包裹内容。”