___ qstntxt ___

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%     
___ answer17856105 ___

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.

    
___ answer4862610 ___

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.

    
___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com. ___ tag123androidlayout ___ Ein Layout definiert die visuelle Struktur für eine Benutzeroberfläche, z. B. die Benutzeroberfläche für ein Aktivitäts-, Fragment- oder App-Widget. ___ tag123androidview ___ Fragen zu Ansichten in Android. Ansichten können in Android Layout XML oder in Java-Code definiert werden. Fragen, die dieses Tag verwenden, umfassen allgemeine Ansichtspraktiken oder Hinweise. Informationen zu bestimmten Ansichten finden Sie in der Info zu diesem Tag. Bei Fragen zum Layout verwenden Sie [Tag: Android-Layout]. ___ answer23196868 ___

Der einfachste Weg ist, es zu benutzen %code% ODER %code%

Und wenn Sie eine Position relativ zum root Layou t möchten, Siehe

    
___ answer4945979 ___

Verwenden Sie %code% , %code% , %code% und %code% . Diese können verwendet werden, nachdem die Ansicht instanziiert wurde.

    
___ answer14205835 ___

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% )

    
___

8

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 :

%Vor%

Und meine Klasse hat das in onCreate() :

%Vor%     
Balaji.K 30.01.2011, 05:48
quelle

5 Antworten

7

Verwenden Sie getLeft() , getRight() , getTop() und getBottom() . Diese können verwendet werden, nachdem die Ansicht instanziiert wurde.

    
sanjay 09.02.2011 14:12
quelle
6

Der einfachste Weg ist, es zu benutzen View.getLocationOnScreen(); ODER getLocationInWindow();

Und wenn Sie eine Position relativ zum root Layou t möchten, Siehe

    
Nepster 21.04.2014 11:50
quelle
5

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.

    
Vishal Pandey 25.07.2013 10:57
quelle
3

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 )

    
VodkaTonic 07.01.2013 23:22
quelle
1

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.

    
Leif 01.02.2011 12:33
quelle