2015-09-18 12 views
5

Ho implementato una galleria utilizzando il recyclerview e ho aggiunto un onLayoutChangeListener al viewholder in modo che una volta che il layout sia stato calcolato, l'altezza della vista di immagini sia cambiata in modo che corrisponda all'aspetto dell'immagine rapporto. Funziona bene quando si apre l'attività, si ruota il dispositivo o si sblocca lo schermo, ma quando si torna da un'altra attività non funziona. Il metodo viene eseguito, ma la visualizzazione di immagini non cambia. Qualche idea di cosa potrebbe causare questo?Modifica della dimensione di una vista in OnLayoutChangeListener

Il debugger mostra l'altezza corretta impostata, ma l'immagine visualizzata non è quella che dovrebbe essere.

Correct Image

Incorrect Image

+0

potrebbe avere qualcosa da fare dove lo si imposta suCreate(). Se stai ruotando il tuo telefono, il sistema di layout viene distrutto e ricostruito, come se avessi aperto l'app per la prima volta. Ma tornando da un'altra app, solo chiamate onResume() ...... forse ecco il problema .... – Opiatefuchs

+0

Come viene determinata la larghezza? Potresti riuscire a risolverlo con 'android: adjustViewBounds =" true "' su ImageView. –

+0

@krislarson Grazie, questo ha risolto il problema. Non sapevo che esistesse l'opzione. Invece di usare l'ascoltatore, uso questa opzione e ora funziona sempre. –

risposta

1

Sembra come se si sta solo cercando di ottenere il rapporto di aspetto corretto su un ImageView.

ImageView ha una proprietà denominata adjustViewBounds. Se hai uno specifico layout_width come match_parent o un valore dp, puoi specificare wrap_content per layout_height e impostare android:adjustViewBounds="true". Ciò farà sì che lo ImageView rispetti automaticamente le proporzioni dell'immagine quando si misura l'altezza.

Problemi correlati