gpt4 book ai didi

android - 没有 URL 地址栏的全屏 Webview

转载 作者:行者123 更新时间:2023-11-30 01:32:59 25 4
gpt4 key购买 nike

我们正在尝试将网站封装在移动应用程序中。本网站支持Chrome、IE9及以上版本和Safari浏览器。在尝试创建一个 Android 应用程序来包装网站时,下面是创建的布局

<?xml version="1.0" encoding="utf-8"?>
<WebView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

这是我的代码

protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_web);
new GcmRegistrationAsyncTask(this).execute();

WebView myWebView = (WebView) findViewById(R.id.webview);

Intent intent = getIntent();

String url = intent.getStringExtra(Constants.URL);
myWebView.setWebChromeClient(new WebChromeClient());
//myWebView.setWebViewClient(new WebViewClient());
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl(url);
}

如果我只使用 WebViewClient,网站在全屏模式下可以正常工作,但由于它与 Android Viewer 不兼容,所以网站无法正常显示。如果我使用 WebChromeClient,它会在单独的浏览器 (Chrome) 中正确打开网站,但会显示 URL 地址栏。我浏览了很多相同的帖子,但无法找到解决方案。这是我的最终目标

我需要在移动应用程序中打开网站,我想隐藏地址标题栏。我怎样才能做到这一点?

最佳答案

我使用下面的,它就像你想要的那样工作

WebView webView = (WebView) findViewById(R.id.webview);
ProgressBar progressBar = (ProgrssBar) findViewById(R.id.progressBar);

String url = "https://www.google.com";

progressBar.setIndeterminate(false);
progressBar.setMax(100);

WebSettings.ZoomDensity zoomDensity = WebSettings.ZoomDensity.FAR;
webView.getSettings().setJavaScriptEnabled(true);

webView.getSettings().setDefaultTextEncodingName("utf-8");
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setDefaultZoom(zoomDensity);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.requestFocus(View.FOCUS_DOWN);

webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
webView.setWebChromeClient(webChromeClient);
webView.setWebViewClient(this.getWebViewClient());

progressBar.setProgress(0);
progressBar.setVisibility(View.VISIBLE);
webView.loadUrl(url);

以及 WebChromeClientWebViewClient 实现;

WebChromeClient webChromeClient = new WebChromeClient() {

@Override
public void onProgressChanged(WebView view, int newProgress) {

super.onProgressChanged(view, newProgress);
progressBar.setProgress(newProgress);

}
};

public WebViewClient getWebViewClient() {

return new WebViewClient() {

@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
progressBar.setVisibility(View.GONE);
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);

progressBar.setVisibility(View.GONE);
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {

progressBar.setVisibility(View.VISIBLE);

//Some checks
if (url.contains("load.elsewhere.com")) {
//If you want to handle where load.elsewhere.com is loaded, say in another external browser
progressBar.setIndeterminate(true);

//startActivity to load elsewhere

return true;
}

return super.shouldOverrideUrlLoading(view, url);
}
};
}

ProgressBar 是我添加的用来显示一些进度的东西

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top" />

</FrameLayout>

关于android - 没有 URL 地址栏的全屏 Webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35510953/

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