2012-05-21 46 views
5

Después de la pregunta: Animate change of view background color on Android Estoy tratando de hacer que un TextView se desvanezca entre dos fondos a través del recurso TransitionDrawable. Mi archivo XML transición se ve así:TransiciónDibujado como fondo en TextView no funciona como se esperaba

<?xml version="1.0" encoding="utf-8"?> 
<transition xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:drawable="@drawable/gray_bar" /> 
    <item android:drawable="@drawable/green_bar" /> 
</transition> 

y trato de configurarlo como fondo en tiempo de ejecución:

TextView answerBox = (TextView) findViewById(R.id.answerBox); 
answerBox.setBackgroundResource(R.drawable.correct_transition); 
TransitionDrawable transition = (TransitionDrawable) answerBox.getBackground(); 
transition.startTransition(1500); 

El resultado es que el TextView se transforma de esto:

Textview with gray_bar background a esto: Textview with green_bar background

Cuando toda la barra gris se debe transformar en g reen uno.

Ambas son imágenes png de 9 parches. Estos son los originales:

gray_bar green_bar

Mi conjetura es que la barra verde se está llenando el espacio disponible para el texto dentro de la barra gris, pero no sé qué. ¿Alguna pista? El gris también parece mucho más grande de lo que debería, pero no cambia de tamaño antes, durante o después de la transición, a pesar de la apariencia de las imágenes incluidas. Puede ser un problema con las imágenes de 9 parches porque he probado imágenes normales y la transición funciona muy bien.

¡Gracias por cualquier ayuda!

+0

Tengo exactamente el mismo problema ... ¿lograron resolver esto de alguna manera? – zwebie

+0

hmmm, en el ejemplo de google usan setImageDrawable tal vez el setbackground no es un comportamiento esperado, si no, entonces podrías poner una imagen vista como "fondo" (usando el diseño relativo colócalo debajo de la vista de texto) y solo ejecutar la transición sobre eso ? – MikeIsrael

+0

No, eso tampoco funciona. He cambiado a color en lugar de imágenes. Sugiero que sea un problema de 9 parches porque probé el mismo código con imágenes normales y funcionó como se esperaba. Entonces, zwebie, está trabajando con color en lugar de imágenes de 9 parches, y en mi caso funciona con imágenes normales (sin 9 parches). – viridis

Respuesta

0

Pude reproducir el problema que está viendo con la barra verde sin ocupar todo el espacio de la gris. Para solucionarlo, tome la barra gris del parche 9 y extienda las líneas en la parte inferior y derecha a un píxel de las esquinas.

En una nota lateral, otro problema potencial con sus 9 parches es que, a medida que el contenido aumenta en altura, su imagen tendrá artefactos visuales a medida que se estira verticalmente. Esto es el resultado de la altura de la barra negra en el lado izquierdo de la imagen, que determina qué parte del parche 9 se debe estirar. Una mejora adicional a estos 9 parches sería reducir la línea negra de la izquierda a solo un píxel en el centro mismo del borde izquierdo. Como solo un píxel está marcado como estirable, esto debería proporcionarle un buen borde vertical nítido si aumenta su altura.

Si incluye su código de diseño, es posible que pueda ayudarle con sus otros problemas de tamaño.

Cuestiones relacionadas