2012-08-28 39 views
0

我正确地获取了我下载的可绘制图形,并且显示正确。我只想在我的ImageView上显示图像的顶部144x284dip。相反,当图像下载时,ImageView将自身调整为可绘制的宽度和高度。我试着修改layoutparams和minimumwidth/minimumheight,都无济于事。获取下载的可绘制图像时ImageView自动调整

有什么我可以做的强制ImageView留在144x284?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="284dip" 
    android:layout_height="144dip" > 

    <ImageView 
     android:id="@+id/imageViewLogo" 
     android:layout_width="284dip" 
     android:layout_height="144dip" /> 

</LinearLayout> 
+0

什么是ImageView的布局管理器?你可以发布布局XML文件吗? – RajV

+0

你在那里;-) – razielsarafan

回答

1

如果我理解正确的话,你想要做的两件事情:

  1. 修复的ImageView的大小284dip X 144dip。
  2. 仅显示未缩放图像的左上角部分。

做第二部分将需要使用“矩阵”刻度类型,并将刻度设置为1.0,将变换因子设置为0.0。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="284dip" 
     android:layout_height="144dip" 
     android:scaleType="matrix" 
     android:src="@drawable/ic_launcher" /> 
</LinearLayout> 

默认情况下,缩放因子为1,翻译为0.因此,您不必做任何其他操作。如果你希望有不同的缩放和翻译,你可以编写这样的代码。

void showImage(Bitmap bm) { 
    float scaleFactor = ...; 
    float transform = ...; 

    imageView.setImageBitmap(bm); 
    final Matrix matrix = new Matrix(); 
    matrix.setScale(scaleFactor, scaleFactor); 
    matrix.setTranslate(transform, transform); 
    imageView.setImageMatrix(matrix); 
} 
1

好吧,我解决了它。

我只是这样做:

Bitmap newBitmap = Bitmap.createBitmap(bm, 0, 0, 144, 284); 

然后将其设置为ImageView的。