Attualmente ho diverse viste e lo schermo è diviso in due sezioniDifferenza tra addOnGlobalLayoutListener e onWindowFocusChanged?
Esempio:
text1 image1
text2
text3
text4
Il problema è, se l'immagine 1 è alto, si sovrappongono TextView sul lato sinistro, per cui uso a sinistra di per forzare la larghezza della vista testo non superiore alla sinistra dell'immagine.
android:layout_toLeftOf="@id/imageView1"
tuttavia, ogni TextView sono allineati a sinistra del ImageView come io non conosco l'altezza di esso fino a quando viene creata la vista. E voglio tutta la vista testuale sotto la linea di base di imageview rimuovere le regole di layout di android:layout_toLeftOf
Così cerco la soluzione e trovo due modi?
1.onWindowFocusChanged
2.getViewTreeObserver().addOnGlobalLayoutListener
Entrambi possono ottenere lo yaxis della vista.
I problemi sono:
1. what is the difference between them ?
2. I tried approach 2 , but it is not working, how to fix it?
Codice:
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);
}
}
});
L'errore è vorrei impostare un valore globale per memorizzare y della ImageView, ma mette in guardia The final local variable ImgY cannot be assigned, since it is defined in an enclosing type
Inoltre, il removeRule funzione return
The method removeRule(int) is undefined for the type TextView
Grazie mille per l'aiuto.