目前本地或网络的网页内容和文件加载
WebView是在您的应用程序显示Web和HTML内容的视图。不像OpenUri,这需要用户在Web浏览器的设备上,WebView中显示您的应用程序内的HTML内容。
本指南由以下几部分组成:
- 内容?- web视图支持各种内容源,包括嵌入的HTML,网页和HTML字符串。
- 导航?-网页视图包括导航到特定页面,回到主页。
- 活动?–监听并通过在WebView中用户所采取的行动作出回应。
- 性能?-了解的WebView的每个平台上的性能特点。
- 权限?-了解如何设置权限,这样的WebView将在您的应用程序工作。
- 布局?-的WebView有它是如何奠定了一些非常特殊的要求。学习如何正确地确定的WebView显示:
内容
WebView中附带了以下类型的内容支持:
- HTML和CSS网站 - 的WebView有使用HTML和CSS编写的网站,包括支持JavaScript的全力支持。
- 文档 - 因为WebView中使用每个平台上本地组件实现的WebView能够显示是每个平台上查看文件。这意味着.PDF适用于iOS和Android,但不是的Windows Phone。
- HTML字符串 - 网页视图可以显示从内存中的HTML字符串。
- 本地文件 - 上方内嵌在应用中的WebView可以提出任何内容类型。
注:WebView在Windows和Windows Phone不支持的Silverlight,Flash或任何ActiveX控件,即使它们被完整的Internet Explorer在该平台上的支持。
从网上显示的网站中,设置的WebView的来源属性为一个字符串网址:
var browser =
new
WebView {Source
=
"http://xamarin.com"};
注?- URL必须以指定的协议完全形成(即它必须具备的"http://"或"https://"前缀)。
iOS和ATS
自9版,iOS版将只允许您的应用程序与默认情况下采用最佳实践的安全服务器进行通信。值必须在设定的Info.plist以实现与不安全的服务器进行通信。
注意:如果您的应用需要到不安全网站的连接,你应该总是输入域使用异常NSExceptionDomains改运ATS完全关闭使用NSAllowsArbitraryLoads。NSAllowsArbitraryLoads应只有在极端紧急情况下使用。
以下说明如何使特定域(在这种情况下xamarin.com)绕过ATS要求:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>xamarin.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
这是只启用某些领域绕过ATS,让您同时从非信任域的额外的安全性中获益使用受信任的站点的最佳实践。下面演示禁用ATS为应用程序的安全性较低的方法:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads
</key>
<true/>
</dict>
见应用传输安全有关的iOS 9这项新功能的详细信息。
HTML字符串
如果你想展示在代码中动态定义的HTML的字符串,你需要创建一个实例HtmlWebViewSource:
var browser = new WebView ();
var htmlSource = new HtmlWebViewSource ();
htmlSource. Html = @" < html > < body >
< h1 > Xamarin . Forms < / h1 >
< p > Welcome to WebView . < / p >
< / body > < / html > ";
browser. Source = htmlSource;
在上面的代码中,@是用来标记HTML作为一个字符串,这意味着所有常见的转义字符被忽略。
web视图可以显示嵌入到应用程序中的HTML,CSS和Javascript的内容。例如:
<html>
<head>
<title>Xamarin
Forms</title></head>
<body>
<h1>Xamrin.Forms</h1>
<p>This
is an iOS web page.</p><img src="XamarinLogo.png"
/></body>
</html>
CSS:
html,body {
margin:0;
padding:10;
}
body,p,h1 {
font-family: Chalkduster;
}
注意,在上述的CSS中指定的字体将需要被定制为每个平台,因为不是每个平台具有相同的字体。
注:目前在Xamarin.Forms一个bug,使得本地的HTML内容无法在Windows上显示。这不会影响的Windows Phone。见Bugzilla的更多信息,以及最新的状态。
要使用显示本地内容WebView,你需要打开HTML文件像任何其他,然后加载的内容作为串入的Html的HtmlWebViewSource。有关打开文件的详细信息,请参阅处理文件。
虽然我们已经加载的第一页时,WebView没有的HTML来自哪里知识。与引用本地资源的网页打交道时是个问题。当这可能发生在包括当地页面链接到对方的例子,一个页面使用了一个单独的JavaScript文件的,或者页面链接到CSS样式表。
为了解决这个问题,你需要告诉的WebView在哪里可以找到文件系统上的文件。做到这一点通过设置BASEURL对房地产HtmlWebViewSource被使用的WebView。
因为在每个操作系统的文件系统是不同的,你需要确定每个平台上的网址。Xamarin.Forms公开DependencyService在每个平台上运行时的解决依赖。
要使用DependencyService,首先定义可以在每个平台上实现的接口:
Public interface IBaseUrl
{
????String Get();
}
????????????????????????????
需要注意的是,直到接口各平台上实现,应 ??用程序将无法运行。在共同的项目,请务必记得设置BASEURL使用DependencyService:
var source = new HtmlWebViewSource();
source.BaseUrl = DependencyService.Get<IBaseUrl>().Get();
????????????????????????????
从这里,你需要提供每个平台项目中的接口的实现:
时间: 2024-10-24 17:56:11