Webview加载网页出现放大,使用系统浏览器加载就不会,这是什么原因?

时间:2022-06-04 17:21:15
下面是我的代码,如果我没有重载shouldOverrideLoadding时候在系统自带的浏览器打开,打开的网页是正常的。
但是如果我重载shouldOverrideLoadding在自己的webview里面打开,那么打开的网页是放大的。
我代码中打印的值:(上面两种方式都是这样的结果)
Scale =2.0
screenDensity=320

PS:
1、我是为了打开我本地的HTML文件所以写了这个simple code来测试,因为我之前写的webview打开我的widget也是放大的;
我的widget在PC上打开是正常的。
2、这个是在TV上测试的代码。就是智能TV。android4.3平台

疑问:
1、我的猜想是我的webview设置哪里出错了或者没有设置,各位谁有法子经验,求解疑回答下==。
2、如果我在webview这边还是搞不出来,是不是可以从HTML5的自适应来考虑?


public class WebviewTestActivity extends Activity 
{
WebView myWebView;
TextView displayText;
final static String TAG="WebviewTestActivity=>";
//Button bnt1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myWebView = (WebView)findViewById(R.id.webview_id);
      
        
        
        
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.requestFocus();
        
        //
        myWebView.getSettings().setSupportZoom(true);
        
        //
        myWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
        myWebView.getSettings().setSupportMultipleWindows(false);

myWebView.getSettings().setUserAgentString("Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5");
        //
        myWebView.getSettings().setBuiltInZoomControls(true);
        //myWebView.getSettings().setJavaScriptEnabled(true);
       /*
        myWebView.setWebViewClient(new WebViewClient(){

public boolean shouldOverrideLoadding(WebView view,String url){
view.loadUrl(url);
return true;
}
});*/
myWebView.loadUrl("http://www.ifeng.com");
String Scale = String.valueOf(myWebView.getScale());
Log.i(TAG,"--Scale:--"+Scale);


int screenDensity=getResources().getDisplayMetrics().densityDpi;
Log.i(TAG, "--screenDensity:--"+String.valueOf(screenDensity));  //60-160-240
        
    }
}

2 个解决方案

#1


你试试我这个封装好的加载webservice的方法喃

	private void setMenuWeb(WebView web) {// 设置主页面的WebView
web.getSettings().setJavaScriptEnabled(true);
// web.getSettings().setBuiltInZoomControls(true);
// web.getSettings().setDisplayZoomControls(false);
web.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String strUrl) {
view.loadUrl(strUrl);
tvUrl.setText(strUrl);
return false;
}

@Override
public void onPageStarted(WebView view, String strUrl,
Bitmap favicon) {
super.onPageStarted(view, strUrl, favicon);
tvUrl.setText(strUrl);
}

@Override
public void onPageFinished(WebView view, String strUrl) {
}

@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
}
});
web.loadUrl(homePage);// 打开浏览器
}

#2


myWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
你这里设置了使用中等字体,你可以试一下用小号的试一下 ,可以设置很多个大小选项

#1


你试试我这个封装好的加载webservice的方法喃

	private void setMenuWeb(WebView web) {// 设置主页面的WebView
web.getSettings().setJavaScriptEnabled(true);
// web.getSettings().setBuiltInZoomControls(true);
// web.getSettings().setDisplayZoomControls(false);
web.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String strUrl) {
view.loadUrl(strUrl);
tvUrl.setText(strUrl);
return false;
}

@Override
public void onPageStarted(WebView view, String strUrl,
Bitmap favicon) {
super.onPageStarted(view, strUrl, favicon);
tvUrl.setText(strUrl);
}

@Override
public void onPageFinished(WebView view, String strUrl) {
}

@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
}
});
web.loadUrl(homePage);// 打开浏览器
}

#2


myWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
你这里设置了使用中等字体,你可以试一下用小号的试一下 ,可以设置很多个大小选项