删除 ImageView 自动调整大小

Posted

技术标签:

【中文标题】删除 ImageView 自动调整大小【英文标题】:Remove ImageView auto-resizing 【发布时间】:2012-08-07 19:38:55 【问题描述】:

我想在我的屏幕设备上放置一个 Y 边距较大的 ImageView,这意味着图像的一部分会超出屏幕,然后图像会被裁剪。

问题是 android 一直在缩放图像,以便它适合屏幕,但我不希望这样,我希望图像被裁剪。

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

附:我尝试了所有可能的 ScaleType 属性,但没有一个对我有用!

代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_ >

<ImageView 
    android:layout_
    android:layout_
    android:layout_marginTop="200dp"
    android:background="@drawable/my_image"
    android:scaleType="centerCrop"
    />      

</RelativeLayout>

【问题讨论】:

等等。 CENTER_CROP 应该保持图像正常大小而不进行任何缩放。请发布代码。 我刚刚在我的问题中添加了一些代码。 CENTER_CROP 对我不起作用。 【参考方案1】:

尝试将android:background 替换为android:src

【讨论】:

谢谢。图像的底部被正确裁剪,但图像的顶部也被裁剪,这很奇怪。 这是 centerCrop 的预期行为。对于您要执行的操作,此post 可能会对您有所帮助:“我认为将其放在具有精确宽度/高度值的框架布局中(在裁剪发生之前指定最大图像尺寸)应该可以。然后在图像上查看,指定 layout_gravity=right 和 width/height 作为 wrap_content。"【参考方案2】:

您的代码的第一个问题是您使用了:

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 文件中进行必要的更改。

【讨论】:

以上是关于删除 ImageView 自动调整大小的主要内容,如果未能解决你的问题,请参考以下文章

自动调整大小后如何获得框架位置?

调整 UIBarButtonItem 的 Imageview 的大小,以便缩小图像 (iOS)

调整imageView大小后调整图像大小

调整超级视图大小时自动调整子视图

ImageView 调整大小并保持纵横比

在不停止 stackView 自动调整大小的情况下对齐图像视图