Zur Zeit habe ich mehrere Ansichten und der Bildschirm in zwei Bereiche eingeteiltUnterschied zwischen addOnGlobalLayoutListener und onWindowFocusChanged?
Beispiel:
text1 image1
text2
text3
text4
Das Problem ist, wenn die image1 groß ist, wird es die Textview auf der linken Seite überlappen, so dass ich nach links von, um zu erzwingen, dass die Textansichtsbreite die linke Bildansicht nicht überschreitet.
android:layout_toLeftOf="@id/imageView1"
jedoch werden alle Textview nach links von der Imageview ausgerichtet, wie ich die Höhe der es nicht wissen, bis die Ansicht erstellt wird. Und ich möchte alle Textansicht unter der Grundlinie von Bildansicht entfernen Sie die Layout-Regeln android:layout_toLeftOf
Also suche ich nach der Lösung und finde zwei Möglichkeiten?
1.onWindowFocusChanged
2.getViewTreeObserver().addOnGlobalLayoutListener
Beide können die Yaxis der Ansicht erhalten.
Die Probleme sind:
1. what is the difference between them ?
2. I tried approach 2 , but it is not working, how to fix it?
Code:
image.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ImgY = image.getY();
}
});
lng.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (lng.getY() > ImgY) {
lng.removeRule(RelativeLayout.LEFT_OF);
}
}
});
Der Fehler ist ich einen globalen Wert setzen möchte den y von Imageview zu speichern, aber es warnt The final local variable ImgY cannot be assigned, since it is defined in an enclosing type
Auch die removeRule Funktion zurück
The method removeRule(int) is undefined for the type TextView
Vielen Dank für Ihre Hilfe.