0

我正在正确获取我下载的可绘制对象并且它们正确显示。我只想在我的 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>
4

2 回答 2

1

好的,我解决了。

我只是这样做了:

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

然后将其设置为 ImageView。

于 2012-08-28T15:31:26.640 回答
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);
}
于 2012-08-28T17:07:52.347 回答