2012-09-25 71 views
1

可能重複:
WebView: how to preserve the user's zoom settings across sessions?保持縮放級別中的WebView

我開發一個簡單的Android應用程序,它加載我的WebView內的初始網址,那麼用戶是免費的放大/縮小和導航。

當用戶點擊鏈接時,「縮放級別」丟失(或重置),用戶必須再次放大/縮小!這令用戶感到沮喪!我無法找到如何保存/保留當前縮放。 (我使用onScaleChanged事件試過,但似乎它是在用戶點擊後,才產生)

我使用解決了,裏面onPageFinished:

@Override 
public void onPageFinished(WebView webView, String url) { 
webView.loadUrl("javascript:(function() { " + 
"document.getElementsByTagName('body')[0].style.zoom='" + yourzoomvariable + "'; })()"); 
} 

非常感謝您的幫助!

+0

謝謝,但我認爲它是不同的。我知道如何存儲/檢索值,但我不知道何時(在哪個事件中)我可以保存縮放。我試着在onScaleChanged裏面做,但是當用戶點擊一個鏈接並改變頁面時,這個事件就會發生。當用戶已經點擊一個鏈接時,我找不到如何更改縮放。 – MoreOver

回答

0

你對所展示的html有權嗎?你可以調節比例也縮小到HTML內部與頭中的meta標籤:

例如:

<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0"> 

編輯:

您也可以注入每個載荷元標記完成像下面的代碼將背景顏色更改爲漸變。

public void onPageFinished(WebView view, String url) { 



      //styling 



      webview.loadUrl("javascript:(function() { " + 
        "document.getElementsByTagName('body')[0].style.background = '-webkit-gradient(linear, 0% 0%, 0% 100%, from(#143b8a), to(#266af3))'; " + 
        "})()"); 



     } 

而且你可以請使用放大和縮小(ZoomOut)值喜歡這裏解釋How to zoom in/out the content of a WebView programmatically?然後,你可以保存有狀態和用戶將不得不調整它唯一的。

+0

我不知道。 :(我想檢測任何縮放變化,存儲和恢復,所以用戶不必手動去做。 – MoreOver

+0

請參閱我上面的編輯,以及菲爾之前提到的鏈接:http://stackoverflow.com/questions/2959833/webview-how-to-preserve-the-users-zoom-settings-across-sessions – SunnySonic

+0

謝謝。如何更改javascript中的縮放比例?我可以使用onScaleChanged檢測比例更改,但此事件被解僱只有當用戶點擊一個鏈接後,所以新頁面加載舊縮放,我不知道如何改變縮放到這個新的頁面加載。菲爾的鏈接顯示如何更改縮放級別,但對於下一個加載網址和而不是當前的 – MoreOver