Aparentemente hay un bug en Android que rompe View.bringToFront
.¿Cómo llevar una vista al frente sin llamar a bringToFront()?
Si tengo vistas dispuestas en un GridView y quiero traer una vista al frente al llamar a bringToFront(), es posible que se mueva a la posición inferior derecha en el GridView.
Algo sombrío está sucediendo allí, así que no puedo usar bringToFront(). Cuando no lo llamo, todo funciona bien. Pero las Vistas se superponen: si utilizo la animación de escala para escalar una Vista, se ve parcialmente oscurecida por las Vistas en la parte inferior y a la derecha.
He comprobado a cabo fuente de BringToFront y llama parent.bringChildToFront (...)
es este método
public void bringChildToFront(View child) {
int index = indexOfChild(child);
if (index >= 0) {
removeFromArray(index);
addInArray(child, mChildrenCount);
child.mParent = this;
}
}
aparentemente quita la vista de sí mismo! ¡Sin piedad! ¿Es tan tonto un ViewGroup que no puede administrar índices Z de otra manera que los controles de mezcla? Obviamente, cuando GridView elimina a su hijo y luego lo vuelve a agregar, ¡se coloca al final de la Grilla!
¿Hay algo que pueda hacer para mostrar una Vista encima de otras sin recurrir a alguna piratería? Una cosa que me viene a la mente es crear otra Vista encima de GridView, que aparecerá por encima de la que trato de traer a Frente(), pero no me gusta esta solución.
Esto no funcionará con la animación de propiedades. –