RecyclerView内部的Webview有时仅在Nougat设备上显示空白屏幕

Kun*_*unu 7 android google-chrome webview

在我的Nougat设备中,RecyclerView内的webview有时是空白的.当我慢慢滚动然后回到webview项目内容消失.Android N以下的设备没有问题.Android N使用Chrome作为应用的默认浏览器.所以我认为Chrome中可能存在一个错误,因此我也在Chrome门户网站中提出了一个错误.在SO中有几个相关的问题,但这并没有解决我的问题.那么在Android webview设置中有哪种方法可以解决这个问题?我在bug链接中写了详细说明.

错误链接:点击这里

我的WebView的onBindViewHolder方法代码是

final VHItem vhItem = (VHItem) holder;

vhItem.webViewChild.getSettings().setUseWideViewPort(false);
vhItem.webViewChild.getSettings().setJavaScriptEnabled(true);

vhItem.webViewChild.loadData("<body>" + html + "</body>", "text/html;charset=utf-8", "utf-8");
Run Code Online (Sandbox Code Playgroud)

哪里

html是html字符串

更新

他们已经解决了这个问题.如果您仍然遇到同样的问题,请尝试将Android Chrome版本更新为61或更高版本.

小智 1

此问题的出现可能有多种原因

  • 当您滚动得非常快时,Recyclerview 纯粹基于以最少的时间膨胀视图并重用现有视图。这意味着,当您滚动时,当视图(一个项目)退出屏幕时,只需更改其内容即可在下面购买相同的视图。当您从互联网加载时,最好先下载所有数据,然后显示它。Webview 消耗大量数据,将它们放在 Recyclerview 中完全违反了设计原则。

要修复此问题,您可以添加一些按钮来重新加载数据或在每次显示视图时刷新。

  • Nougat 从 http urlconnection 类中删除了一些函数,我对此不确定。但在谷歌开发者视频之一中,我看到了一些关于某些功能和方法的贬值的内容

希望您觉得这有帮助。