2012-06-08 9 views
8

¿Hay algún método equivalente a Dialog.setOnShowListener() para la clase View en android?Android - Necesita devolución de llamada cuando se muestra Vista

Lo necesito porque cuando llamo getLocationOnScreen en una vista (digamos foo) en la línea inmediatamente posterior a algunosViewGroup.addView (foo), obtengo location = (0,0).

No puedo usar ningún método de ciclo de vida de la actividad, porque la adición de foo está en ejecución (presionar un botón). Cualquier ayuda sería muy apreciada. Gracias por adelantado.

Respuesta

17

se debe utilizar un ViewTreeObserver:

someViewGroup.addView(foo)  

ViewTreeObserver vto = someViewGroup.getViewTreeObserver(); 
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 

      ///getLocationOnScreen here 

      ViewTreeObserver obs = someViewGroup.getViewTreeObserver(); 
      obs.removeGlobalOnLayoutListener(this); 
     } 
    }); 
+0

Gracias! funcionó ! :) –

+0

@Zelleriation Hola, traté de usar la técnica que sugeriste, pero aun así, a veces obtengo (0,0) la ubicación, dentro de la devolución de llamada ... ¿Alguna idea de por qué está sucediendo eso? – Vlad

Cuestiones relacionadas