java - 在 android web View 中,html 页面被视为在大屏幕而不是在移动设备中打开

标签 java android html webview responsive

我在我的 Android 应用程序中使用 webview。现在的问题在于它打开的 Web View 像桌面网站而不是移动平台网站。

例如,当我在 webview 中打开页面时,它显示为 Mobile app webview look, where the page zooms out and things become very small

当我在网络浏览器中打开相同的页面时,它看起来像;

Android web browser view where texts are zoom in and page becomes horizontally scrolable. Both are same html(please ignore the background color)

现在我的问题是我想在 WebView 中打开页面,就像在网络浏览器中一样,但我不知道为什么它会这样。

我的网页 View 代码如下;

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

我更改了 webview.setInitialScale(1); 的值,但到目前为止还没有运气。

我无法更改页面的 HTML,因此我需要在 webview 端进行一些更改。

注意页面所附图像与在浏览器和 Web View 中打开的同一 HTML 页面相同。请忽略背景颜色。

任何帮助都会对我很有好处。提前致谢。

最佳答案

这对我有用

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

}

关于java - 在 android web View 中,html 页面被视为在大屏幕而不是在移动设备中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49912487/

相关文章:

java - Firebase 数据库未更新

android - 如何为 rest API 唯一标识您的 Android 应用

html - 浏览器调整大小后出现空白

java - 如何确定 Akka actor/supervisor 层次结构?

java - Okhttp 或 HTTPClient : Which offers better functionality and more efficiency?

Android - PendingIntent 不调用 onCreate

php - 在 onblur 函数中使用 PHP 和 Javascript

javascript - 当 iframe 加载来自链接的内容时,滚动将与索引页面一起加载并消失

java - redis内存占用

java - Base64上传-性能