在我的Nougat设备中,RecyclerView内的webview有时是空白的。当我慢慢滚动然后回到webview项目内容消失。 Android N以下的设备没有问题.Android N使用Chrome作为应用的默认浏览器。所以我认为Chrome中可能存在一个错误,因此我也在Chrome门户网站中提出了一个错误。在SO中有几个相关的问题,但这并没有解决我的问题。那么在Android webview设置中有哪种方法可以解决这个问题?我在bug链接中写了详细说明。
错误链接:click here
我的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");
其中
html 是html字符串
更新
他们已经解决了这个问题。如果您仍然遇到同样的问题,请尝试将Android Chrome版本更新为61或更高版本。
答案 0 :(得分:3)
对于启动webview消耗内存,因为它必须加载并呈现html数据。我认为如果你用以下两种方式实现它会更好,而不是在回收站视图中使用webview:
使用webview似乎是实现你正在尝试的任何东西的简单方法,但相信我,这些缺点超过了收益。所以最好避免它。
答案 1 :(得分:1)
出于许多可能的原因,这个问题可能会出现
要修复此问题,您可以添加一些按钮来重新加载数据或每次显示视图时刷新。
希望您觉得这很有帮助。
答案 2 :(得分:0)
我通过在RecyclerView的上层浮动WebView并同时在RecyclerView中放置HOLDER视图来解决此问题。 然后,我为RecyclerView的滚动事件注册一个侦听器。我控制浮动WebView的位置和可见性
答案 3 :(得分:0)
您可以在onCreateViewHolder
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
WebView web = new WebView(parent.getContext());
web.setLayoutParams(lp);
String url="...";
WebSettings settings = web.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
web.loadUrl(url);
holder = new ViewHolder(web);