删除ImageView自动调整大小

时间:2012-08-07 19:38:56

标签: android scaling android-imageview crop

我想在我的屏幕设备上放置带有大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>

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

您的代码的首要问题是您使用过:

android:background="@drawable/my_image"

而不是:

android:src="@drawable/my_image"

(后台没有scaleType选项可用)。

现在,如果这仍然没有帮助,您可能必须使用scaleType =“matrix”,然后只需创建一个矩阵来完成所需的工作。例如,假设你想要:

  • 保持图片的比例
  • 缩放图像,使width参数等于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文件中进行必要的更改。