获取下载的drawable时,ImageView自动调整大小

时间:2012-08-28 15:07:51

标签: android drawable android-imageview

我正确地获取了我下载的drawables并且它们正确显示。我只想在ImageView上显示图像的顶部144x284dip。相反,当下载图像时,ImageView会将自身调整为可绘制的宽度和高度。我已经尝试修改layoutparams和minimumwidth / minimumheight,但没有用。

我有什么办法可以强迫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>

2 个答案:

答案 0 :(得分:1)

好的,我解决了。

我刚刚这样做了:

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

然后将其设置为ImageView。

答案 1 :(得分:1)

如果我理解正确,你想做两件事:

  1. 将ImageView的大小修复为284dip X 144dip。
  2. 仅显示图片的左上角部分,未缩放。
  3. 执行第二部分将要求您使用“矩阵”比例类型并将比例设置为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);
    }