Methoden zum Erhalten der Position der Ansicht geben 0 zurück

8

Diese Frage wurde mehrmals gestellt, aber jeder gibt den Grund dafür an, warum dies auftritt (d. h. die Berechnung findet vor dem Layout statt). Aber ich brauche die Lösung dafür. Ich probierte getBottom(); , getTop(); , getLocationOnScreen(int[] location); . Aber alle geben den Wert Null (0) zurück. Ich habe sogar versucht, diese in onStart(); zu geben, um Zeit für Layout zu geben, aber kein Glück. Hier ist mein Code:

%Vor%

Layout-XML:

%Vor%

Ich bitte nochmals um Entschuldigung für die Wiederholung der Frage. Vielen Dank im Voraus.

    
Kartik Kaushik 16.01.2012, 11:42
quelle

1 Antwort

13

Sie setzen das "Messen" in die onWindowFocusChanged() -Methode.
Wie die Dokumentation sagt:

  

Dies ist der beste Indikator dafür, ob diese Aktivität für den Benutzer sichtbar ist.

Sie könnten es auch in die onResume() Zeile einfügen ist der letzte Schritt, bevor die Anwendung vollständig auf dem Bildschirm angezeigt wird und aktiv ist:

  

Beachten Sie, dass onResume nicht der beste Indikator dafür ist, dass Ihre Aktivität für den Benutzer sichtbar ist. Ein Systemfenster wie die Tastensperre kann sich vorne befinden. Verwenden Sie onWindowFocusChanged (boolean), um sicher zu sein, dass Ihre Aktivität für den Benutzer sichtbar ist (z. B. um ein Spiel fortzusetzen).

Wenn das Fenster / die Ansicht noch nicht angezeigt wurde, gibt es keine Garantie, dass es seine Messungen hat, daher wäre die vorherige Methode besser.

    
Jave 16.01.2012 12:32
quelle