Sto usando React Native su un dispositivo Android reale. Quando si crea un'applicazione molto semplice con solo la seguente funzione di rendering del componente applicazione principale ...L'immagine 'contain' resizeMode non funziona in react native
render() {
<Image
source={{uri:'http://resizing.flixster.com/DeLpPTAwX3O2LszOpeaMHjbzuAw=/53x77/dkpu1ddg7pbsk.cloudfront.net/movie/11/16/47/11164719_ori.jpg'}}
style={
{
flex: 1,
resizeMode: 'contain',
backgroundColor: 'yellow'
}
} />
}
ottengo il seguente risultato sul mio dispositivo:
Come si può vedere l'intero sfondo è giallo in modo tale che ci dice che l'elemento dell'immagine sta prendendo davvero l'intera dimensione dello schermo. Ma è solo sbagliato. La "copertina" resizeMode funziona come previsto (e così anche la modalità "stretch"). È la modalità 'contiene' che non funziona (la più importante dal mio punto di vista). Il problema diventa ancora peggiore quando si posiziona l'immagine su una ListView poiché l'immagine non viene nemmeno visualizzata.
UPDATE 1 Come sottolinea Federico, "contiene" funziona solo quando l'immagine è più grande della dimensione del contenitore Quindi, come possiamo rendere l'immagine prendere l'intera dimensione del contenitore mantenendo le sue proporzioni? Le percentuali non sono ancora supportate dagli stili in React e non so come ottenere le proprietà larghezza e altezza dell'immagine una volta che l'immagine è stata caricata. Nessuno degli eventi associati al componente Immagine fornisce tali informazioni.
UPDATE 2 Buone notizie. Ora sto usando React Native v0.24.1 e sembra che la modalità 'contain' dell'immagine ora funzioni come previsto, anche quando la dimensione effettiva dell'immagine è inferiore al suo contenitore. La soluzione di zvona è buona (anche se è necessario tenere a mente che onLayout ti darà la dimensione della vista dell'immagine in cui l'immagine è sottoposta a rendering, ma NON la dimensione effettiva dell'immagine che viene caricata). Per ora, non conosco alcun modo per scoprire la dimensione effettiva dell'immagine (supponiamo che stai recuperando l'immagine da una risorsa di rete e non conosci la dimensione, che potrebbe essere molto importante se vuoi calcolare il suo aspect ratio).
Dannazione! Hai completamente ragione! L'ho dimenticato. Il problema con React è che non puoi usare le percentuali in larghezza e altezza per le proprietà di stile ... quindi ora non so come rendere l'immagine prendere l'intera dimensione del contenitore mantenendo le sue proporzioni !!! – user3621841
Non è quello che "copertura" dovrebbe fare? Dalla documentazione: _'cover ': ridimensiona l'immagine in modo uniforme (mantiene le proporzioni dell'immagine) in modo che entrambe le dimensioni (larghezza e altezza) dell'immagine siano uguali o maggiori della dimensione corrispondente della vista (meno riempimento) ._ –