2012-06-08 13 views
8

Czy istnieje metoda równoważna z Dialog.setOnShowListener() dla klasy View w systemie Android?Android - Potrzebuje oddzwonienia, gdy wyświetlany jest widok

Potrzebuję go, ponieważ kiedy wywołuję getLocationOnScreen w widoku (powiedz foo) w linii bezpośrednio po someViewGroup.addView (foo), otrzymuję location = (0,0).

Nie mogę użyć żadnej metody cyklu życia czynności, ponieważ dodatek foo jest uruchomiona (naciśnięcie przycisku). Każda pomoc będzie bardzo ceniona. Z góry dziękuję.

Odpowiedz

17

Należy użyć 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

Dzięki! zadziałało ! :) –

+0

@Zelleriation Witam, próbowałem użyć sugerowanej techniki, ale mimo to, czasami dostaję (0,0) miejsce, wewnątrz callback .. jaki jest pomysł, dlaczego tak się dzieje? – Vlad

Powiązane problemy