2010-03-24 102 views
29

我有一个WebView和2个网址来打开它。我想要做的是,当我为第一个网址设置缩放级别,然后我转到第二个网址时,它也应该具有相同的缩放级别。现在,这两个缩放级别都会重置。设置为Webview的缩放

感谢, 法哈

回答

34

使用webSettings

webview.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR); 

注意的是,虽然webSettings是因为API等级1,可WebSettings.ZoomDensity是因为API级别7.非常适用于所有设备分辨率可用。

此外,为了对web视图启用缩放,添加以下代码:

webView.getSettings().setBuiltInZoomControls(true); 
+4

看来这是现在已经过时。 – 2014-09-15 16:08:00

+1

它是不赞成使用的财产..看到我更新的答案来结束它 – 2015-05-28 11:10:11

36

这将是适用于这种情况下,我相信

mWebView.setInitialScale(ZOOM_LEVEL); 

其中ZOOM_LEVEL例如可以 25 for 25% 150 for 150%

+0

正确的答案为webview.getSettings()。setDefaultZoom(WebSettings.ZoomDensity.FAR);已弃用 – 2017-03-09 07:21:07

13

在离开第一页之前,请使用

int scale = 100 * webView.getScale(); 

然后加载第二页后,使用

webView.setInitialScale(scale); 
+1

getScale();现在已被弃用。 – definera 2015-04-23 14:07:53

3

@约翰给了正确的想法,但一个命令就足够了,因为你可以得到和页面之前设置显示:

private class MyWebViewClient extends WebViewClient { 
    public void onPageFinished(WebView view, String url) { 
     view.setInitialScale((int)(100*view.getScale())); 
    } 
} 

然后就设置此为您的WebView客户端:

webview.setWebViewClient(new MyWebViewClient()); 
1

试试这个THI纳克

int default_zoom_level=100; 
Point Scroll=new Point(0,0); 
webview1.setInitialScale(default_zoom_level); 
    webview1.loadData("url"); 

做zoomIn /缩小(ZoomOut)或Scrolling.Since规模后,可以得到改变,因此计算等级与沿X轴和Y轴滚动。

int current_scale_level=(int)webview1.getScale()*100; 
Scroll.x=webview1.getScrollX(); 
Scroll.y=webview1.getScrollY(); 

then before loading of next webview do this 

webview2.setInitialScale(current_scale_level); 
    webview2.loadData("url"); 
webview2.scrollTo(Scroll.x,Scroll.y); 
+0

不完全是我想要的,但给了我想法如何解决我的问题。谢谢。 – 2017-03-06 10:17:28

16

setDefaultZoom is deprecated。

webview.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR); 

因此,不是,你可以使用如下,

webview.setInitialScale(1); 
webview.getSettings().setLoadWithOverviewMode(true); 
webview.getSettings().setUseWideViewPort(true); 

这能帮你去除

setDefaultZoom(WebSettings.ZoomDensity.FAR). 
+2

这应该是最新的接受答案 – 2016-08-18 20:33:53

2

您可以将变焦设置为0.1F

mWebView。 zoomBy(0。1F);

+0

这是Lollipop的最佳答案 – superuser 2016-10-25 08:21:06

+0

谢谢,希望对您有所帮助 – 2016-11-06 09:07:52

0

我发现这个博客有帮助:

它将帮助您设置的初始缩放级别和寻求变化的WebView内容调整大小

//设置的初步进展搜索栏 mSeekBar.setProgress(mWebView 。.getSettings()getTextZoom()/ 25);

// Set a change listener for seek bar 
    mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 
      /* 
       public abstract void setTextZoom (int textZoom) 
        Sets the text zoom of the page in percent. The default is 100. 

       Parameters 
        textZoom : the text zoom in percent 
      */ 

      // Zoom the web page text 
      // We will allow text zooming 25% to 300% 
      mWebView.getSettings().setTextZoom(i*25); 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 

http://android--code.blogspot.in/2016/01/android-how-to-change-webview-text-size.html