简体   繁体   English

在android网络视图中,html页面被视为在大屏幕而不是在移动设备中打开

[英]In android web view the html page is being treated like it is being opened in a big screen rather in mobile device

I am using a webview in my android app. 我在android应用中使用的是webview。 Now the issue is in that webview it is opening like a desktop site not like a mobile platform site. 现在问题出在该Web视图中,它像桌面站点一样打开,而不像移动平台站点那样打开。

As for example, when I open the page in webview it is being shown like 例如,当我在webview中打开页面时,它显示为 移动应用程序的Webview外观,页面缩小并且情况变得很小

And the same page when I am opening in web browser it looks like; 在Web浏览器中打开同一页面时,它看起来像;

Android Web浏览器视图,其中文本被放大并且页面可水平滚动。两者都是相同的html(请忽略背景色)

Now my question is I want to open the page in my web view like it is in web browser and I have no idea why it is behaving like that. 现在我的问题是我想像在Web浏览器中一样在Web视图中打开页面,我不知道为什么它会那样。

My webview code is like; 我的webview代码就像;

    final WebView webview = (WebView)vi.findViewById(R.id.webview);
    WebSettings set = webview.getSettings();
    set.setJavaScriptEnabled(true);
    set.setBuiltInZoomControls(true);
    set.setJavaScriptEnabled(true);
    set.setDomStorageEnabled(true);
    set.setLoadWithOverviewMode(true);
    set.setUseWideViewPort(true);
    set.setSaveFormData(true);
    set.setJavaScriptCanOpenWindowsAutomatically(true);
    set.setBuiltInZoomControls(true);
    set.setDisplayZoomControls(false);
    set.setSupportZoom(false);
    set.setDefaultTextEncodingName("utf-8");


    WebChromeClient webClient = new WebChromeClient(){

        public void onCloseWindow(Window w){
            super.onCloseWindow(webview);
            System.out.println("Closed");
        }
    };
    webview.setWebChromeClient(webClient);

    webview.setWebViewClient(new WebViewClient(){
        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
        {
            // Handle the error
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            dialog.dismiss();
        }

    });

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

    webview.loadUrl(url);

I changed the value of webview.setInitialScale(1); 我更改了webview.setInitialScale(1);的值webview.setInitialScale(1); but no luck so far. 但到目前为止没有运气。

I can not change the HTML of the pages, so I need to do some kind of changes in webview end. 我无法更改页面的HTML,因此我需要在Webview端进行某种更改。

NB The attached images of page is same HTML page opening in browser and webview. 注意:页面的附件图像是在浏览器和Web视图中打开的相同HTML页面。 PLEASE IGNORE THE BACKGROUND COLOR. 请忽略背景颜色。

Any help will be very good for me. 任何帮助对我都会很好。 Thanks in advance. 提前致谢。

This works for me 这对我有用

public class MainActivity extends AppCompatActivity {
private WebView webView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().requestFeature(Window.FEATURE_PROGRESS);

    setContentView(R.layout.activity_main);
    super.onCreate(savedInstanceState);

    initViews();
}


protected void initViews() {
    webView = (WebView) findViewById(R.id.webView);
    if (Build.VERSION.SDK_INT >= 19) {
        webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
    } else {
        webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getCertificate();
    webView.setWebViewClient(new SSLTolerantWebViewClient());


    webView.loadUrl("https://www.google.com");

}


private class SSLTolerantWebViewClient extends WebViewClient {
    // ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_bar);

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        Log.d("ddd", "ddd");
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        // progressBar.setVisibility(View.GONE);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        // progressBar.setVisibility(View.VISIBLE);
    }

    @Override
    public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
        handler.proceed();
    }
}

} }

Is your page responsive ? 您的页面是否响应? Try opening page in mobile browser. 尝试在移动浏览器中打开页面。 if it is not responsive make it responsive. 如果没有响应,请使其响应。 Make sure you have added viewport meta tag in html like - 确保您已在html中添加了视口元标记,例如-

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM