gpt4 book ai didi

android - 在 Android-L 中将 WebView 绘制到 Canvas 中

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:09 34 4
gpt4 key购买 nike

我正在使用 Android Print Framework 将 WebView 的 HTML 内容保存为 PDF。由于 Android-L 中的 WebView 有一种呈现 WebView 内容的新方法,建议调用 enableSlowWholeDocumentDraw()创建任何 webview 之前的方法。这将禁用呈现优化,因此 WebView 将能够呈现整个 HTML 页面。

这是将 WebView 绘制到 Canvas 中的部分代码。

PdfDocument.Page page = document.startPage(pageInfo);
mWebView.draw(page.getCanvas());

我尝试从 Application、BaseActivity 调用 WebView.enableSlowWholeDocumentDraw(),并且在我的 Fragment 中创建 WebView 之前和之后。但这没有帮助。

我尝试通过将层类型设置为软件和硬件来启用/禁用硬件加速,但这也没有帮助。我仍然无法绘制整个 WebView。只有可见部分会被绘制到 Canvas 上。

有没有人注意到这种行为?是否有解决方案或者这是一个 Bug?

编辑

事实证明,这与 WebView.enableSlowWholeDocumentDraw() 无关,我们仍在讨论该问题。这是 Bug Report .这是 Sample App重现问题。

最佳答案

我是 this question 的作者.

要解决此问题,我必须调用 WebView.enableSlowWholeDocumentDraw() before 在您的 fragment 中膨胀 View 。在 Mikhail Naganov 的回答的评论中,我看到您尝试了很多选项,但没有尝试这个选项。下面是我在带有 WebView 的 fragment 的 onCreateView() 方法中使用的代码。

public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle bundle){
//Enable the drawing of the whole document for Lollipop to get the whole WebView
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP){
WebView.enableSlowWholeDocumentDraw();
}
View view = inflater.inflate(R.layout.my_layout, parent, false);

/* Rest of code */
}

真的没有别的了。如果这不起作用,那么它可能是一个错误,您应该按照 Mikhail 的建议进行报告。

希望对您有所帮助!

关于android - 在 Android-L 中将 WebView 绘制到 Canvas 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30223117/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com