2017-07-25 112 views
7

在我的Nougat設備中,RecyclerView內部的webview有時是空白的。當我慢慢滾動,然後回到webview項目內容消失。 Android N以下的設備沒有問題。Android N使用Chrome作爲應用的默認瀏覽器。所以我認爲Chrome中可能存在一個bug,所以我在chrome門戶中也發現了一個bug。 SO中有幾個相關的問題,但這並沒有解決我的問題。那麼有沒有辦法在Android webview設置中解決這個問題?我在bug鏈接中寫了詳細描述。RecyclerView內的Webview有時僅在牛軋糖設備上顯示空白屏幕

錯誤鏈接:爲的WebView click here

我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或更高版本。當您滾動速度非常快 Recyclerview純粹是基於充氣的觀點最小的時間和重用現有的觀點

+0

你可以粘貼你的onBindViewHolder()。或者你完成適配器 –

+0

@DigvijaySingh檢查我編輯的問題。 – Kunu

+0

此答案可能會幫助您https://stackoverflow.com/a/2379054/5908465 –

回答

1

這個問題可以到達許多可能的原因

  • 。這意味着,當一個視圖(一個項目)退出屏幕時,當您滾動屏幕時,只需通過更改其內容即可購買相同的視圖。從Internet上加載時,首先下載所有數據並顯示它總是更好。 Webview消耗大量數據,完全違背設計原則,讓他們進入Recyclerview。

要修復此問題,您可能需要添加一些按鈕以在每次顯示視圖時重新加載數據或刷新。

  • 牛軋糖從http urlconnection類中刪除了一些函數 我不確定這個。但在谷歌開發人員視頻之一,T已經看到了一些關於某些功能和方法的貶值

希望你會發現這有幫助。

3

對於開始的webview消耗內存,因爲它負載必須加載和呈現html數據。而不是在回收站視圖中使用網頁視圖,我認爲這將是更好,如果你實現它通過以下兩種方式:

  1. 您處理數據的列表中的HTML,並將其發送到網頁視圖並刪除回收站完全查看
  2. 您可以在xml中繪製預期內容的佈局,並將其直接膨脹到recyclerview並移除完成的webview。 (注意:根據適配器在該位置的位置和數據,可以將不同視圖充入回收站)。

使用webview可能似乎是實現任何你試圖但相信我的簡單方法,缺點超出了這個好處。所以它最好避免它。

+0

如果您實施應用程序作用域高速緩存並使用應用程序上下文創建WebView,則RecyclerView中的WebView是可管理的。這樣,您不必在每次滾動到視口或每個屏幕方向更改時重新初始化它。 –

+0

@EugenPechanec你能說一點嗎? – Kunu

+0

是的,請您介紹一下如何管理帶有應用範圍的網頁瀏覽。 – Harsh