Автоматическое изменение размера ImageView при получении загруженного рисунка

Я правильно получаю загруженные чертежи, и они отображаются правильно. Я просто хочу показать верхнюю часть изображения размером 144x284 на моем ImageView. Вместо этого, когда изображения загружаются, 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>

person Charlie-Blake    schedule 28.08.2012    source источник
comment
Что такое менеджер компоновки для ImageView? Не могли бы вы опубликовать XML-файл макета?   -  person RajV    schedule 28.08.2012


Ответы (2)


Если я вас правильно понял, вы хотите сделать две вещи:

  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);
}
person RajV    schedule 28.08.2012

Хорошо, я решил это.

Я только что сделал это:

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

Затем установите его в ImageView.

person Charlie-Blake    schedule 28.08.2012