Ich möchte die Position der Ansicht auf dem Bildschirm finden.
Dafür verwende ich die Methoden wie %code% , %code% , %code% , %code% . Aber leider werden alle diese Methoden %code% zurückgegeben.
Gibt es alternative Möglichkeiten, die Positionen der Ansicht zu finden (z. B. Koordinaten auf dem Bildschirm)?
Mein Layout %code% :
%Vor%Und meine Klasse hat das in %code% :
%Vor%Die Methoden, die Sie geschrieben haben, reichen aus finde den Ort auf dem Bildschirm, aber der Ort, an dem du geschrieben hast, ist nicht korrekt.
Versuchen Sie, die Methoden (view.getLeft (), view.getTop () ... usw.) in onWindowFocusChanged (boolean hasFocus) -Methode zu schreiben.
zum Beispiel ...
**
%Vor%**
Es wird Ihr Problem lösen.
Ich bin nicht sicher, ob Sie die Position der Ansicht erhalten können, bevor die Layout-Phase durchgeführt wurde. Sobald die Ansicht geöffnet ist, können Sie %code% verwenden, um die Position der Ansicht zu erhalten. %code% und ähnlich gibt nur die Position der Ansicht im übergeordneten Element zurück.
Der einfachste Weg ist, es zu benutzen %code% ODER %code%
Und wenn Sie eine Position relativ zum root Layou t möchten, Siehe
Verwenden Sie %code% , %code% , %code% und %code% . Diese können verwendet werden, nachdem die Ansicht instanziiert wurde.
Sie können wirklich nicht die Aussicht vor der Hand bekommen. Möglicherweise möchten Sie eine explizite Verwendung von %code% vornehmen, wenn dies möglich ist, oder Sie können dies in der Funktion %code% oder %code% überprüfen.
Wenn Sie nur Dinge ausprobiert haben und Spaß mit Threads haben möchten, wird dieser Code-Block Ihren Code auf den UI-Thread setzen und darauf warten, dass alles gerendert wird und dann Ihren Code anzeigen:
%Vor%Das letzte ist ziemlich schweres Heben, aber es wird die Arbeit erledigt. Normalerweise lege ich solche Zeilen in meine Logs (zB %code% )
Ich möchte die Position der Ansicht auf dem Bildschirm finden.
Dafür verwende ich die Methoden wie view.getLeft()
, view.getBottom()
, view.getRight()
, view.getTop()
. Aber leider werden alle diese Methoden 0
zurückgegeben.
Gibt es alternative Möglichkeiten, die Positionen der Ansicht zu finden (z. B. Koordinaten auf dem Bildschirm)?
Mein Layout main.xml
:
Und meine Klasse hat das in onCreate()
:
Die Methoden, die Sie geschrieben haben, reichen aus finde den Ort auf dem Bildschirm, aber der Ort, an dem du geschrieben hast, ist nicht korrekt.
Versuchen Sie, die Methoden (view.getLeft (), view.getTop () ... usw.) in onWindowFocusChanged (boolean hasFocus) -Methode zu schreiben.
zum Beispiel ...
**
%Vor%**
Es wird Ihr Problem lösen.
Sie können wirklich nicht die Aussicht vor der Hand bekommen. Möglicherweise möchten Sie eine explizite Verwendung von invalidate()
vornehmen, wenn dies möglich ist, oder Sie können dies in der Funktion onPostResume()
oder onResume()
überprüfen.
Wenn Sie nur Dinge ausprobiert haben und Spaß mit Threads haben möchten, wird dieser Code-Block Ihren Code auf den UI-Thread setzen und darauf warten, dass alles gerendert wird und dann Ihren Code anzeigen:
%Vor% Das letzte ist ziemlich schweres Heben, aber es wird die Arbeit erledigt. Normalerweise lege ich solche Zeilen in meine Logs (zB android.util.Log
)
Ich bin nicht sicher, ob Sie die Position der Ansicht erhalten können, bevor die Layout-Phase durchgeführt wurde. Sobald die Ansicht geöffnet ist, können Sie getLocationOnScreen
verwenden, um die Position der Ansicht zu erhalten. getTop
und ähnlich gibt nur die Position der Ansicht im übergeordneten Element zurück.
Tags und Links android android-layout android-view