Я использую платформу Android Print Framework для сохранения содержимого HTML в WebView в формате PDF. Поскольку WebView в Android-L имеет новый подход к рендерингу содержимого WebView, рекомендуется вызвать метод enableSlowWholeDocumentDraw() перед созданием веб-просмотров. Это отключит оптимизацию рендеринга, поэтому WebView сможет отображать всю HTML-страницу.Нарисуйте WebView на холсте в Android-L
Вот часть кода для рисования WebView на холсте.
PdfDocument.Page page = document.startPage(pageInfo);
mWebView.draw(page.getCanvas());
Я пытался дозвониться WebView.enableSlowWholeDocumentDraw()
из приложения, BaseActivity, а также сразу после и до создания WebView внутри моего фрагмента. Но это не помогло.
Я попытался включить/отключить аппаратное ускорение, установив тип слоя как ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ и ОБОРУДОВАНИЕ, но это тоже не помогло. Я все еще не могу рисовать весь WebView. На холст будет нарисована только видимая часть.
Кто-нибудь заметил это поведение? Есть ли решение для этого или это ошибка?
EDIT
Оказывается, что это не про WebView.enableSlowWholeDocumentDraw()
, и мы все еще обсуждаем о проблеме. Это Bug Report. И вот Sample App, чтобы воспроизвести проблему.
Как я указал в своем вопросе, я знаю об этом изменении в последней версии Android, и я назвал этот статический метод «WebView.enableSlowWholeDocumentDraw()» из onCreate of Application, перед setContentView в базовой операции и сразу после раздувания моего представления во фрагменте. Это не повлияло вообще – osayilgan
Я вижу, извините за это. Тогда, вероятно, стоит дважды проверить, что ваш WebView действительно имеет большой размер, например. с [hierarchyviewer] (http://developer.android.com/tools/help/hierarchy-viewer.html). Кроме того, вы можете проверить, как работает ваше приложение в KitKat, где всегда был весь документ. –
Я проверил его с KitKat, он работает так, как ожидалось. Таким образом, размер WebView должен быть хорошим. – osayilgan