2013-08-02 14 views
5

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.

risposta

0

È possibile utilizzare immagini in linea con i testi, in una TextView al posto di questo approccio. Dai un'occhiata a this.