Pregunta

¿Cómo puedo evitar que mi mapa de bits se escale automáticamente en ImageView o ImageButton si la vista o el botón se estira usando "fill_parent" o "weight"?

Esto será útil, por ejemplo, para crear una barra de herramientas de 4 botones en la parte superior de la pantalla donde los botones están igualmente espaciados, pero las imágenes dentro de los botones siguen estirándose incluso si uso scaleType="center", lo que debería evitar escalando según el documento, pero no es así.

¡Se agradece cualquier idea!

Gracias,

¿Fue útil?

Solución

Descubrí que cuando uso Android: Background escala automáticamente la imagen que estás usando al tamaño de la Vista.

Intenté usar android:src para poner la imagen en la vista.La imagen no se escaló, pero no pude centrarla en relación con el tamaño de la Vista.

Así que intenté hacer que todo el botón tuviera su propio diseño relativo y esto es lo que usé:

<RelativeLayout android:id="@+id/RelativeLayout01" 
                android:layout_height="fill_parent" 
                android:layout_width="fill_parent">
                <ImageButton android:id="@+id/ImageButton01"    
                             android:layout_height="fill_parent"
                             android:layout_width="fill_parent"></ImageButton>
                <ImageView android:id="@+id/ImageView01"
                           android:layout_width="wrap_content"
                           android:layout_height="wrap_content" 
                           android:background="@drawable/cardback1" 
                           android:layout_centerInParent="true"></ImageView>
</RelativeLayout>

El ImageButton está en segundo plano y siempre tendrá el mismo tamaño que el diseño.Sin embargo, ImageView siempre permanecerá centrado en RelativeLayout y no se escalará.De esta manera, el RelativeLayout puede crecer y moverse y la imagen en la parte superior del botón siempre permanecerá del mismo tamaño, pero el botón crecerá.Sin embargo, la imagen se reducirá si el diseño se vuelve más pequeño que la imagen misma.

Creo que eso es lo que estabas buscando.Puede que haya una mejor manera de hacer esto, pero esto es todo lo que se me ocurre ahora.

Otros consejos

Simplemente modificar estirable, aplicar un fondo transparente más grande. Di mi estirable en IPAP es icon.png 41 * 48 píxeles. He creado una nueva imagen 60 * 60 píxeles con un fondo transparente, copiar y pegar el icon.png anterior y guardar bajo el mismo nombre. De esta manera usted no tiene que tocar sus diseños.

A continuación, se puede comprobar la zona del botón más grande si se aplica un no transparente Android: Fondo

<ImageButton android:id="@+id/widget_open"
android:src="@drawable/icon_widget_arrow_up"
android:background="#ff777777"
android:layout_height="wrap_content"
android:layout_width="wrap_content"></ImageButton>

Aplicar el dibujable anterior y nuevo en android: src , debe ver claramente el área ImageButton.

Por cierto, estoy ejecutando la aplicación en modo de compatibilidad.

Si se escala la imagen, asegúrese de que no está ejecutando la aplicación en modo de compatibilidad (por ejemplo, si orienta Android 1.5 / 1.6 sin el apoyo de múltiples densidades y ejecutar la aplicación en Android 2.0.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top