2013-12-19 44 views

回答

4

解决方法1:在这里我们设置按百分比缩放级别这个意义上,当页面就绪的getScale将返回5.2f:

mView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     view.setInitialScale(520); 

     super.onPageStarted(view, url, favicon); 
    } 

解决方案2:这种方法是不是100%准确,因为它的舍入缩放为int值:

private WebView mView; 
private Handler mZoomHandler = new Handler(); 
private Runnable mZoomRunnable = new Runnable() { 

    @Override 
    public void run() { 
     if ((int) mView.getScale() < WANTED_SCALE) { 
      mView.zoomIn(); 
      mZoomHandler.postDelayed(this, 10); 
     } else if ((int) mView.getScale() > WANTED_SCALE) { 
      mView.zoomOut(); 
      mZoomHandler.postDelayed(this, 10); 
     } 
    } 
}; 

mView.getSettings().setSupportZoom(true); 
mView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     mZoomRunnable.run(); 
    } 
}); 
+0

谢谢,请给我一些时间来测试这个工作是否足够满足我的需求,我会报告回 –

+1

对不起,这没有奏效。 'run()'永远运行,因为'zoomIn'和'zoomOut'具有太大的缩放级别,它永远无法到达'WANTED_SCALE'。 –

+0

这与Nexus 5运行4.4平台一致。你在用哪种设备? – Niko