WebView.zoomIn()在渲染视图之前无法正常工作

时间:2014-03-09 05:58:19

标签: android android-webview

我在片段的onCreateView中调用了wv.zoomIn(),它没有效果。

全文......

我的片段包含一个滑块,我用它来编程缩放/缩放webview。这工作正常。

我现在想要存储上次使用的缩放级别,并在下次显示时将其应用到webview。所以在onCreateView中,我正在检索缩放级别并调用zoomIn适当的次数。

public View onCreateView(LayoutInflater inflater...
...
if (savedZoom > defaultZoom) { 
 for (int i=defaultZoom; i< savedZoom; i++) {
   MyLog.d("zooming in");   // appears x times in log as expected
   boolean zoominResult = wv.zoomIn();
   MyLog.d("zoominResult = "+zoominResult); // shows zoomIn returns FALSE
 }
}

日志确认wv.zoomIn()的调用次数正确,但显示的webview仍处于默认缩放状态。

任何建议,例如调用zoomIn()后渲染的方法,或者保留和恢复webview缩放设置的替代方法?

3 个答案:

答案 0 :(得分:2)

我认为此代码会有所帮助:

webView.clearView();
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("< your URL >");

int scale = (int) (100 * webView.getScale());

webView.setInitialScale(scale);

webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setBuiltInZoomControls(true);

答案 1 :(得分:1)

而不是缩放循环中的webview, 试试

wv.getSettings().setDefaultZoom(savedZoom-defaultZoom);

此外,为了在webView上启用缩放,请添加以下代码:

wv.getSettings().setBuiltInZoomControls(true);

您也可以尝试

int zoomLevel=(defaultZoom/savedZoom)*100;
wv.setInitialScale(zoomLevel);

答案 2 :(得分:1)

只需设置初始比例:

webView.setInitialScale(500);

其中500可以是您保存的缩放值。