删除 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 自动调整大小的主要内容,如果未能解决你的问题,请参考以下文章