2015-05-06 16 views
11

Obecnie używam WebView.draw() do zrobienia zrzutu ekranu całego WebView i zapisania go w Bitmapie (w oparciu o this solution). Do tej pory działało doskonale.WebView.draw() nie działa poprawnie w najnowszym systemie Android Aktualizacja WebView

Niedawno testowałem tę funkcjonalność na Nexusie 5 (należy zauważyć, że na Nexusie 5, że WebView ma większy rozmiar niż ekran, więc użytkownik może przewijać zarówno poziomo, jak i pionowo), uruchamiając Lollipop 5.1 i najnowszą aktualizację System Android WebView (wersja 42.0.2311.137 w momencie pisania), gdy zauważyłem, że wygenerowana bitmapa była błędna. Miał on odpowiednie wymiary, ale zamiast pokazywać cały WebView, miał tylko tę część WebView, która była widoczna dla użytkownika po wywołaniu tej metody.

Próbowałem odinstalować wszystkie aktualizacje do systemu Android WebView (w ten sposób przywracając go do wersji 39 (1743759-arm) i z wersją fabryczną funkcjonuje dobrze.Taki problem jest spowodowany stosunkowo niedawną aktualizacją Android System WebView Nie udało mi się znaleźć dziennika zmian, więc nie mogę ustalić, co się zmieniło i jak go naprawić. Poniżej znajduje się krótkie objaśnienie wizualne:

Czy ktoś inny napotkał ten problem i znalazłeś możliwe rozwiązanie?

+1

Mam ten sam problem. Próbowałem wywoływać 'WebView.enableSlowWholeDocumentDraw()' w onCreate, przed ustawieniem widoku treści, ale to nie działa. Czy możesz udostępnić swoje kroki, aby to naprawić? – osayilgan

+0

Mój problem był w Fragmentie, więc musiałem wywołać 'WebView.enableSlowWholeDocumentDraw()' z metody 'onCreateView()'. Spróbuję w działaniu i zobaczę, czy zadziała w ciągu kilku następnych dni, jeśli będę miał czas. – jguerinet

+0

Używam również Fragmentu. Próbowałem również wywoływać go z 'onCreate', ale nie robiło to żadnej różnicy. – osayilgan

Odpowiedz

14

Przed utworzeniem jakichkolwiek WebViews musisz zadzwonić pod numer WebView.enableSlowWholeDocumentDraw(). To znaczy, jeśli masz jakieś WebViews w Twój układ, upewnij się, że wywołasz tę metodę przed dzwoniąc pod numer setContentView() w swoim .

+0

To było dokładnie to, dzięki. – jguerinet

+0

jego pracował dla mnie dzięki .. – user512

+0

Dzięki! to działa –

Powiązane problemy