我想在我的屏幕设备上放置带有大Y边距的ImageView,这意味着图像的一部分将在屏幕外,然后图像将被裁剪。
问题在于Android一直在缩放图像,因此它适合屏幕内部,但我不希望这样,我希望裁剪图像。
如何强制裁剪ImageView而不调整其大小?
P.S。我尝试了所有可能的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>
答案 0 :(得分:4)
尝试将android:background
替换为android:src
。
答案 1 :(得分:3)
您的代码的首要问题是您使用过:
android:background="@drawable/my_image"
而不是:
android:src="@drawable/my_image"
(后台没有scaleType选项可用)。
现在,如果这仍然没有帮助,您可能必须使用scaleType =“matrix”,然后只需创建一个矩阵来完成所需的工作。例如,假设你想要:
以下是代码:
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文件中进行必要的更改。