WebView是一个非常重要的控件,移动开发过程中会经常使用WebView来显示数据。WebView的使用非常简单,创建相应的对象,使用LoadData或者LoadUrl方法加载html数据,前者是价值html字符串,后者是加载一个可访问的URL地址。
这是基本应用,WebView还有两个高级应用,一个是显示加载的百分比,另外一个是支持返回按钮。
1、如何加载百分比
这里需要对WebView的方法进行重写,如下所示:
private class AwesomeWebClient : WebViewClient { }
private class AwesomeWebChromeClient : WebChromeClient
{
private Activity mParentActivity;
private string mTitle;
public AwesomeWebChromeClient(Activity parentActivity)
{
mParentActivity = parentActivity;
mTitle = parentActivity.Title;
}
public override void OnProgressChanged(WebView view, int newProgress)
{
mParentActivity.Title = string.Format("Loading {0}%", newProgress);
mParentActivity.SetProgress(newProgress * 100);
if (newProgress == 100) mParentActivity.Title = mTitle;
}
}
然后,调用相应的WebView方法:
newsWebView = FindViewById<WebView>(Resource.Id.newsWebView);
newsWebView.Settings.JavaScriptEnabled = true;
newsWebView.Settings.SetSupportZoom(true);
newsWebView.Settings.BuiltInZoomControls = true;
newsWebView.Settings.LoadWithOverviewMode = true; //Load 100% zoomed out
newsWebView.ScrollBarStyle = ScrollbarStyles.OutsideOverlay;
newsWebView.ScrollbarFadingEnabled = true;
newsWebView.VerticalScrollBarEnabled = true;
newsWebView.HorizontalScrollBarEnabled = true;
newsWebView.SetWebViewClient(new AwesomeWebClient());
newsWebView.SetWebChromeClient(new AwesomeWebChromeClient(this));
2、点击返回按钮后退网页
这个比较简单,重写OnKeyDown方法即可,如下所示:
public override bool OnKeyDown(Android.Views.Keycode keyCode, Android.Views.KeyEvent e)
{
if (keyCode == Keycode.Back && newsWebView.CanGoBack())
{
newsWebView.GoBack();
return true;
}
else
{
this.Finish();
return base.OnKeyDown(keyCode, e);
}
}