[英]Webview inside RecyclerView is showing blank screen sometimes on Nougat devices only
在我的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");
哪里
html是html字符串
更新
他們已經解決了這個問題。 如果您仍然遇到同樣的問題,請嘗試將Android Chrome版本更新為61或更高版本。
對於啟動webview消耗內存,因為它必須加載並呈現html數據。 我認為如果您使用以下兩種方式之一實現它會更好,而不是在回收站視圖中使用webview:
使用webview似乎是實現你正在嘗試的任何東西的簡單方法,但相信我,這些缺點超過了收益。 所以最好避免它。
出於許多可能的原因可能會出現此問題
要修復此問題,您可以添加一些按鈕來重新加載數據或每次顯示視圖時刷新。
希望你覺得這很有幫助。
我通過在RecyclerView的上層浮動WebView,同時在RecyclerView中放置一個HOLDER視圖來解決這個問題。 然后我在RecyclerView的scroll事件中注冊一個監聽器。 我控制浮動WebView的位置和可見性
您可以在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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.