Methoden, um die position der anzeigen gibt 0 zurück
Diese Frage wurde schon mehrfach gefragt, aber jeder gibt den Grund, warum dies geschieht (D. H. die Berechnung erfolgt, bevor das layout gelegt wird). Aber ich brauche die Lösung für dieses. Ich habe versucht getBottom();
, getTop();
, getLocationOnScreen(int[] location);
. Aber alle gibt den Wert Null (0). Ich selbst habe versucht, diese in onStart();
zu geben, Zeit für das layout gelegt werden, aber kein Glück.
Hier ist mein code:
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.textView1);
Log.d("getBottom :", Integer.toString(tv.getBottom()));
Log.d("gettop :", Integer.toString(tv.getTop()));
int[] location = new int[2];
tv.getLocationOnScreen(location);
Log.d("getlocationonscreen values :", Integer.toString(location[0])+" "+Integer.toString(location[1]));
}
@Override
protected void onStart() {
Log.d("getBottom in onStart :", Integer.toString(tv.getBottom()));
Log.d("gettop in onStart :", Integer.toString(tv.getTop()));
int[] location = new int[2];
tv.getLocationOnScreen(location);
Log.d("getlocationonscreen in onStart :", Integer.toString(location[0])+" "+Integer.toString(location[1]));
super.onStart();
}
Layout-XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="156dp"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout>
Wieder, ich entschuldige mich für die Wiederholung der Frage. Vielen Dank im Voraus.
- Können Sie bitte erklären wenig mehr, was ist Ihr problem genauer. was läuft falsch in obigen code.
InformationsquelleAutor Kartik | 2012-01-16
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Setzen Sie die 'Messung' in der
onWindowFocusChanged()
-Methode.Wie die Dokumentation besagt:
Könnte man es auch in der
onResume()
das ist der Letzte Schritt, bevor die Anwendung vollständig auf dem Bildschirm aktiv, jedoch:Wenn das Fenster/Ansicht noch nicht angezeigt, es gibt keine Garantie, dass Sie Ihre Messungen, so ist die Vorherige Methode besser wäre.