Как предотвратить масштабирование в Android Imageview? - PullRequest
14 голосов
/ 15 февраля 2012

У меня есть изображение размером 480 на 40 пикселей. Я хотел бы показать это изображение в ImageView без масштабирования по размеру.

Пример: Если мой экран имеет ширину всего 320 пикселей, мне бы хотелось, чтобы на экране отображалось только 320 пикселей изображения, а не втиснуть его в ImageView (даже если это означает, что остальная часть изображения обрезается).

Есть ли способ предотвратить его масштабирование?

РЕДАКТИРОВАТЬ: Кроме того, я хотел бы, чтобы левая сторона изображения выровнялась с левой стороной экрана устройства.

Спасибо

Ответы [ 5 ]

27 голосов
/ 15 февраля 2012

Используйте ScaleType.CENTER, например, в XML:

android:scaleType="center"

Это «центрирует изображение на виде, но не масштабирует»

Подробнее здесь: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

(Кстати, это первый хит в поиске "масштаба изображения")

13 голосов
/ 08 марта 2012

Используйте масштабный тип MATRIX, чтобы установить его без масштабирования и центрирования

Будет использоваться единичная матрица, если вы не установите ее с помощью setImageMatrix (matrix);

android:scaleType="matrix"

Или на Java:

view.setScaleType(ImageView.ScaleType.MATRIX);
1 голос
/ 12 июля 2016

Попробуйте это:

                    android:adjustViewBounds="true"
                    android:scaleType="centerCrop"
0 голосов
/ 22 ноября 2018

Если

андроид: scaleType = "центр"

не работает, проверьте, как вы устанавливаете свое изображение. Вы должны использовать Android: SRC, а не Android: Backgorund

так

 android:scaleType="center"
 android:src="@drawable/yourDrawable"
0 голосов
/ 29 ноября 2012

У меня была похожая проблема, когда у меня была графика фиксированного размера, которую я хотел масштабировать до экрана, но оставался в пропорции, это было 480 x 200.

Я использовал Fill_parent по высоте, чтобы он масштабировался, а wrap_content - по ширине. А также Выровнять родительский левый и Выровнять родительский верх.

В вашем случае вы можете просто использовать wrap_content как для Align Parent Left, так и для обоих. Затем я настроил ширину с помощью Right Margin 180dp на обычных экранах, чтобы убедиться, что она поддерживает ширину.

<ImageView
    android:id="@+id/imageLayer"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginRight="180dp"
    tools:ignore="ContentDescription" />
...