2010-09-18 15 views
12

Estoy tratando de establecer el orden z de un elemento UI (es decir, una Vista) para que se superponga a otro elemento, pero llamar a ViewGroup.bringChildToFront() tiene un efecto secundario extraño .... mueve el elemento para que sea el último elemento en el elemento principal (ViewGroup). ¿Es esto un error, un comportamiento esperado, o qué? Más importante aún, ¿cómo puedo establecer el orden z o una vista sin este desafortunado efecto secundario?configuración z orden de Vista con bringChildToFront()

Respuesta

19

Este es el comportamiento esperado. bringChildToFront() simplemente cambia el índice de la Vista dentro de su padre.

0

bringChildToFront(child) no hace más que cambiar el valor de índice del elemento secundario.

Con el fin de traer un niño al frente sin utilizar showNext() o showprevious(),

uso

setDisplayedChild() y indexOfChild() juntos.

ejemplo

vf.setDisplayedChild(vf.indexOfChild(child));

donde niño es la vista que necesita ser traído delante.

Gracias

+8

Sólo cuando su vista padre es un 'ViewFlipper'. –

14

Para enviar una vista de todo el camino de vuelta, hacer esto:

private void moveToBack(View currentView) { 
    ViewGroup viewGroup = ((ViewGroup) currentView.getParent()); 
    int index = viewGroup.indexOfChild(currentView); 
    for(int i = 0; i<index; i++) { 
     viewGroup.bringChildToFront(viewGroup.getChildAt(i)); 
    } 
} 
+7

"i" en lugar de "0" en 'vg.bringChildToFront (vg.getChildAt (0));' –

+0

llamándolo 3 veces trabajado para mí. – usman

Cuestiones relacionadas