2010-09-06 23 views
12

Creé una imagen de fondo personalizada y quería usarla como fondo para un diseño que tiene una altura de wrap_content. Sin embargo, la altura total de los contenidos dentro de ese diseño es mucho menor que la altura de la imagen de fondo.Imagen de fondo para wrap_content

Cuando lo configuro como fondo en XML a través de android: background = "@ drawable/image", noté que muestra toda la altura de la imagen, aunque la altura del contenido real es mucho más corta.

¿Hay alguna manera de evitar que esto suceda?

Gracias.

Respuesta

0

Puede convertir su imagen de fondo en dibujable de 9 parches o usar el mapa de bits XML para modificar el comportamiento de su imagen cuando es mayor que el contenedor. Vea this page para más información sobre ambos.

+0

¿Podría elaborar más sobre esto si utiliza un mapa de bits XML? Intenté usar un mapa de bits XML y utilicé la propiedad android: gravity = "top | fill_horizontal | clip_vertical" para ver si eso resolvería el problema, pero aún no lo hace. – user440308

+0

Bueno, no probé el mapa de bits XML para el caso como el suyo, pero las opciones parecen prometedoras. El modo de 9 parches funcionará con seguridad: ya lo he usado. –

+0

Hmm. He intentado con todas las opciones que podrían ayudar, pero creo que puedo estar haciendo algo mal. He buscado en todas partes en línea y nadie parece estar teniendo este problema ... – user440308

2

Tuve un problema similar y estaba usando un 9patch. La imagen completa de 9 parches se mostraba como fondo aunque el contenido al que estaba adjuntado no era tan grande (estaba usando wrap_content). No estoy seguro de por qué Android eligió mostrar la imagen completa en lugar de escalar el fondo para que se ajuste al contenido.

Sin embargo, solucioné el problema reduciendo la escala de la imagen de fondo. Con eso me refiero a preservar las esquinas pero reduciendo las porciones verticales y horizontales. Ver las imágenes adjuntas del marco de fondo que tenía antes y el resultado del esfuerzo de cambio de tamaño.

alt text alt text

+0

Muchas gracias por esto. Pasé algunas horas para descubrir por qué mi imagen de 9patch generaba una vista que era mucho más alta de lo que debería haber sido con wrap_content como parámetro de altura. Curiosamente, este efecto parece depender del dispositivo.En un Nexus7 la altura de la vista era correcta incluso con la imagen de fondo grande original, mientras que en un Xperia ray la altura de la vista era casi el doble de lo que debería haber sido. En un Xperia mini y en una tableta Android barata con Cyanogen Mod, el "efecto" estaba allí también, pero no tan fuerte como en el rayo Xperia. – Nantoka

0

que también se enfrentó a este problema. Si configura el recurso del fondo es demasiado pequeño, puede tener problemas con la relación de aspecto. La solución que encontré fue dividir la imagen del fondo en tres partes: superior, medio e inferior. Cada una de estas imágenes son fondos de tres Layouts/ImageViews diferentes. La parte central es la que tiene la propiedad "wrap_content":

Top: bg_top

Medio: bg_middle

inferior: enter image description here

A medida que aumentan el tamaño de los contenidos, las fronteras mantendrán no afectado y el medio aumentará también (como lo hará toda la "caja"). Por supuesto, esta es una solución para un caso en el que la partición de la imagen de su fondo tiene sentido.