2012-02-15 9 views
13

Tengo una imagen de 480 por 40 píxeles. Me gustaría mostrar esta imagen en una ImageView sin tener que ajustarla a escala.¿Cómo evito las incrustaciones en Android Imageview?

Ejemplo: si mi pantalla tiene solo 320 píxeles de ancho, me gustaría que solo se mostraran 320 píxeles de la imagen en la pantalla, sin que se agolpe en ImageView (incluso si eso significa que el resto de la imagen se corta). .

¿Hay alguna manera de evitar que se ajuste a escala?

EDITAR: Además, me gustaría que el lado izquierdo de la imagen se alinee con el lado izquierdo de la pantalla del dispositivo.

Gracias

Respuesta

23

Uso ScaleType.CENTER, como este en XML:

android:scaleType="center" 

Esto "centrar la imagen en la vista, sino que se realice sin escala"

Lee más aquí: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html

(Este es, por cierto, el primer éxito en googlear "escala de vista de la imagen")

+0

'ScaleType' es definitivamente el camino a seguir. Funciona para muchos casos de uso diferentes. –

+0

Gracias, pero ¿hay alguna manera de que se quede a la izquierda? – PaulG

+0

@PaulG RelativeLayout – AedonEtLIRA

10

Utilice el tipo de escala MATRIX para configurarlo sin escalar y sin centrar

Utilizará la matriz de identidad a menos que la configure usando setImageMatrix (matriz);

android:scaleType="matrix" 

O en Java:

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

¡Muchas gracias! El centro scaleType no funcionó como se esperaba pero la matriz lo hizo. En mi caso, tengo un layout de TextView a la izquierda de la imagen y cuando el texto crece necesito la imagen a la derecha para mantenerme siempre con el tamaño original. – Moxor

0

tuve un problema similar donde tuve un gráfico de tamaño fijo que quería escalar a la pantalla, pero permanecer en la proporción era de 480 x 200.

Usé Fill_parent en la altura para que se escalara y wrap_content en el ancho. , así como Alinear a la izquierda de los padres y Alinear a la parte superior de los padres.

En su caso, podría simplemente usar wrap_content en ambos, así como Align Parent Left. Luego modifiqué el ancho usando Right Margin 180dp en pantallas normales para asegurarme de que mantuviera el ancho.

<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

Prueba con esto:

    android:adjustViewBounds="true" 
        android:scaleType="centerCrop" 
Cuestiones relacionadas