2012-01-29 25 views
5

Me gustaría mostrar una imagen con un borde. La solución a continuación funciona bien para algunas imágenes, pero no para otras.Escalamiento de imagen incoherente en Android para Android: scaleType = "fitCenter"

Hasta ahora mi mejor versión es que funciona bien para imágenes más pequeñas pero no para imágenes grandes.

Con una imagen más pequeña, la solución muestra la imagen muy bien con un borde de 2 píxeles. Con una imagen grande, el fondo es demasiado ancho en altura.

Estaba probando esto con una imagen que escaé manualmente de decir 2000 * 400 a 200 * 40. Así que era la misma imagen, solo preescalada.

¿Alguna idea de por qué las imágenes grandes no se escalarán de la misma manera que las más pequeñas?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:background="#ffffff" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:orientation="vertical" 
       android:gravity="center" > 

    <ImageView 
      android:id="@+id/testimage" 
      android:background="#000000" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/testimage2" 
      android:padding="2dip" 
      android:scaleType="fitCenter" 
      /> 
</LinearLayout> 
+0

Es posible que desee probar todas las combinaciones de scaleType. –

+0

Eso es lo que hice, y terminé con fitCenter. Estaba seguro de que era el correcto, pero no lo era. – tzrnee

Respuesta

5

Quite el tipo de escala y use android: adjustViewBounds = "true" para su Imageview.

+0

Sí, eso funciona bien. ¡Gracias! – tzrnee