2015-03-30 46 views
3

在android中,我將本地圖像加載到webview中。在模擬器上,甚至在我測試的一款新的Android設備上,一切正常 - 沒有問題。不過,我有一個更老的設備(與Android 2.3.4)有問題。當我第一次加載html文件時,圖像顯示正常。當我點擊手機後退按鈕,然後回到頁面,圖像消失。我試圖弄清楚這是一個常見問題還是隻是一箇舊手機的問題。加載一次後Android webview圖像不顯示

下面是加載文件:

w = (WebView) findViewById(R.id.webview1); 
    w.getSettings().setJavaScriptEnabled(true); 
    w.getSettings().setBuiltInZoomControls(false); 
    w.getSettings().setDefaultTextEncodingName("utf-8"); 

    InputStream is; 
    try { 
     is = getAssets().open("Learn/TrigGraphing.html"); 

     int size = is.available(); 

     byte[] buffer = new byte[size]; 
     is.read(buffer); 
     is.close(); 

     String str = new String(buffer); 

     w.loadDataWithBaseURL("file:///android_asset/Learn/Images/", str, "text/html", "utf-8", "file:///android_asset/Learn/TrigGraphing.html"); 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

下面是HTML:

<img id="img03" class="images" src="file:///android_asset/Learn/Images/UnitCircle10.png"/> 

還有一個扭曲 - 我調整圖像,如果他們太大,不適合在屏幕上。這主要是針對平板電腦。在HTML身體的onload()函數,我執行下面的JavaScript:

function checkImgSize() { 
if($(document).width() > $(window).width()) { 

    windowWidth = $(window).width(); 

    var elements = document.getElementsByClassName("images"); 
    for (var i=0; i<elements.length; i++) { 

     currentImgWidth = elements[i].width; 
     currentImgHeight = elements[i].height; 

     newImgWidth = Math.round(0.85*windowWidth); 
     newImgHeight = (newImgWidth/currentImgWidth)*currentImgHeight; 

     elements[i].style.width = newImgWidth; 
     elements[i].style.height = newImgHeight; 

    } 
} 

我看着這個調整大小功能,我不明白爲什麼它會使得圖像消失,如果他們加載第二次,但我不當然。任何人有任何建議?

+0

使用HTML文件的小寫像名稱像abc.png – 2015-03-30 23:04:26

+0

像重命名它,以便其文件:///android_asset/Learn/Images/unitcircle10.png?我知道你不能上傳帶有大寫字母的名字到drawables文件夾中,但是我之前在assets文件夾中沒有問題 – bluemoon12 2015-03-30 23:21:39

回答

1

經過一段時間的思考,我解決了自己的問題。很明顯,網頁在加載一次後從緩存中加載,出於某種原因,這使它搞砸了 - 儘管我仍然不確定爲什麼。我剛剛用「w.clearCache(true)」清除了緩存;「在加載html之前,它現在工作正常。