2012-02-15 2 views
13

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

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

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

EDIT: Кроме того, я хотел бы, чтобы левая часть изображения совпала с левой стороной экрана устройства.

Благодаря

ответ

23

Использование ScaleType.CENTER, как это в XML:

android:scaleType="center" 

Это "центрировать изображение в представлении, но не выполняются масштабирование"

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

(Это, кстати, первый удар по поисковой системе «картинная шкала»)

+0

'ScaleType', безусловно, путь. Работает для множества различных случаев использования. –

+0

Спасибо, но есть ли способ, чтобы он держался слева? – PaulG

+0

@PaulG RelativeLayout – AedonEtLIRA

10

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

Он будет использовать идентификационную матрицу, если вы не установите ее с помощью setImageMatrix (matrix);

android:scaleType="matrix" 

Или в Java:

view.setScaleType(ImageView.ScaleType.MATRIX); 
+0

Большое спасибо! scaleType центр работал не так, как ожидалось, но матрица. В моем случае у меня есть TextView layout_toLeftOf изображения, и когда текст растет, мне нужно изображение справа, чтобы всегда оставаться с исходным размером. – Moxor

0

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

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

В вашем случае вы можете просто использовать wrap_content для обоих, а также для выравнивания родительского права. Затем я tweeked ширину, используя правую границу 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" /> 
1

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

    android:adjustViewBounds="true" 
        android:scaleType="centerCrop" 
Смежные вопросы