validar setscaletype ejemplo android background drawable crop

setscaletype - set image view android



Fondo de cosecha de Android (4)

Parece que tal cosa solo se puede lograr utilizando ImageView y estableciendo el parámetro scaleType consecuencia. Una solución rápida consiste en utilizar FrameLayout y colocar ImageView en otro diseño con fondo transparente.

Código:

<FrameLayout 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/imageView1" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:src="@drawable/background" /> </FrameLayout>

Tengo un LinearLayout con ancho establecido en fill_parent y height en wrap_content . Ahora quiero darle un fondo de un archivo png, pero hacerlo de forma tradicional hace que LinearLayout de tamaño para mostrar todo el fondo en lugar de recortar la parte adicional.

¿Cómo puedo configurar el fondo de LinearLayout para que no LinearLayout tamaño?

Gracias


El comportamiento predeterminado de los mapas de bits de fondo es llenar el contenedor por completo y aumentar el tamaño horizontal y vertical del contenedor si es necesario. La solución es crear un recurso de mapa de bits dibujable y cambiar la gravedad.

Verifique el siguiente enlace y busque los posibles valores de gravedad. Su vista debería hacer referencia al recurso dibujable y debería estar bien.

http://developer.android.com/guide/topics/resources/drawable-resource.html#Bitmap


pon este código en la actividad xml, por ejemplo activity_main.xml

<ImageView android:id="@+id/imageView1" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:src="@drawable/image" />


Lo resolví subclasificando LinearLayout y anulando la devolución de llamada onMeasure(int,int) y luego actualizando el diseño XML para usar mi nuevo tipo de diseño. No estoy en libertad de publicar ese código exacto, pero lo que hice fue invocar la super.onMeasure(int,int) y comprobar si la altura medida volvió a ser la altura exacta de mi imagen de fondo. Si es así, tomo la altura medida de todas las vistas secundarias, luego calculo un nuevo valor de altura y lo paso a setMeasuredDimension(int,int) .