【问题标题】:WebView.zoomIn() not working before rendering viewWebView.zoomIn() 在渲染视图之前不起作用
【发布时间】:2014-03-09 05:58:18
【问题描述】:

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

全文...

我的片段包含一个滑块,我用它以编程方式放大/缩小 web 视图。这工作正常。

我现在想存储上次使用的缩放级别,并在下次显示时将其应用于 web 视图。因此,在 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() 被调用了正确的次数,但显示的 web 视图仍处于默认缩放状态。

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

【问题讨论】:

标签: android android-webview


【解决方案1】:

我认为这段代码会有所帮助:

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);

【讨论】:

    【解决方案2】:

    而不是循环放大webview, 试试

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

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

    wv.getSettings().setBuiltInZoomControls(true);
    

    你也可以试试

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

    【讨论】:

    • 在您的第一个建议中,“savedZoom”是什么?
    【解决方案3】:

    只需设置初始比例:

    webView.setInitialScale(500);
    

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

    【讨论】:

      猜你喜欢
      • 2017-02-27
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      相关资源
      最近更新 更多