2015-05-06 10 views
11

Attualmente sto utilizzando WebView.draw() per acquisire uno screenshot dell'intero WebView e salvarlo in un bitmap (basato su this solution). Ha funzionato perfettamente fino ad ora.WebView.draw() non funziona correttamente sull'aggiornamento del WebView Aggiornamento del sistema Android più recente

Recentemente ho testato questa funzionalità su un Nexus 5 (si noti che sul Nexus 5 la WebView in questione è più grande dello schermo, quindi l'utente può scorrere sia in orizzontale che in verticale) eseguendo Lollipop 5.1 e l'ultimo aggiornamento di Android System WebView (versione 42.0.2311.137 al momento della scrittura) quando ho notato che la bitmap generata era errata. Aveva le dimensioni corrette ma invece di mostrare l'intera WebView, aveva solo la parte di WebView che era visibile all'utente quando veniva chiamato il metodo.

Ho provato a disinstallare tutti gli aggiornamenti di Android System WebView (riportandolo alla versione 39 (1743759-arm) e con la versione di fabbrica la funzionalità funziona bene. Quindi questo problema è dovuto ad un aggiornamento relativamente recente del . sistema Android WebView non sono riuscito a trovare un registro delle modifiche, quindi non riesco a capire che cosa è cambiato e come risolvere il problema Qui di seguito è una spiegazione visiva rapida:.

Qualcun altro ha incontrato questo problema e trovato una possibile soluzione?

+1

Sto avendo lo stesso problema. Ho provato a chiamare 'WebView.enableSlowWholeDocumentDraw()' su onCreate, prima di impostare la vista del contenuto, ma questo non funziona. Puoi condividere i tuoi passaggi per risolverlo? – osayilgan

+0

Il mio problema era in un frammento, quindi ho dovuto richiamare 'WebView.enableSlowWholeDocumentDraw()' dal metodo 'onCreateView()'. Proverò in un'attività e vedrò se funzionerà nei prossimi due giorni se avrò tempo. – jguerinet

+0

Anche io sto usando con Frammento. Ho provato a chiamarlo anche da "onCreate', ma non ha fatto alcuna differenza. – osayilgan

risposta

14

È necessario chiamare WebView.enableSlowWholeDocumentDraw() prima di creare qualsiasi WebViews. Cioè, se si dispone di qualsiasi WebViews in il tuo layout, assicurati di chiamare questo metodo prima del chiamando il setContentView() nel tuo onCreate().

+0

Era esattamente così, grazie. – jguerinet

+0

ha funzionato per me grazie .. – user512

+0

Grazie! questo funziona –