gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 06:04:01 25 4
gpt4 key购买 nike

我在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com