Xamarin中为名为Browser的WebView构造URL的方法咨询
嘿,我来帮你搞定Xamarin里给WebView指定URL的事儿!针对你这个叫Browser的WebView组件,我分两种常见场景给你具体说实现方式:
一、如果是Xamarin.Forms的WebView
不管是用XAML还是后台代码,都很直接:
1. XAML直接设置
在你的页面XAML里,给Browser组件的Source属性赋值即可:
<WebView x:Name="Browser" Source="https://www.example.com" />
如果用MVVM模式,还可以绑定ViewModel里的URL属性:
<WebView x:Name="Browser" Source="{Binding TargetWebUrl}" />
2. 后台代码赋值
在页面的构造函数、按钮点击事件或者其他逻辑里,找到Browser实例并赋值:
// 方式1:直接用字符串URL Browser.Source = "https://www.example.com"; // 方式2:用Uri对象更严谨(适合需要做URL校验的场景) Browser.Source = new Uri("https://www.example.com"); // 额外:加载本地HTML内容 // 直接加载HTML字符串 Browser.Source = new HtmlWebViewSource { Html = "<html><body><h1>本地HTML内容</h1></body></html>" }; // 加载项目里的本地HTML文件(需将文件设置为EmbeddedResource) var localHtmlSource = new HtmlWebViewSource(); localHtmlSource.BaseUrl = DependencyService.Get<IBaseUrl>().Get(); localHtmlSource.Html = File.ReadAllText(Path.Combine(localHtmlSource.BaseUrl, "your-local-page.html")); Browser.Source = localHtmlSource;
二、如果是Xamarin原生平台(Android/iOS)
原生平台的WebView写法略有不同,分平台说:
Android平台
1. 布局文件(AXml)定义WebView
<WebView android:id="@+id/Browser" android:layout_width="match_parent" android:layout_height="match_parent" />
2. 在Activity里加载URL
// 找到WebView实例 var webView = FindViewById<WebView>(Resource.Id.Browser); // 按需开启JavaScript(如果网页需要) webView.Settings.JavaScriptEnabled = true; // 加载远程URL webView.LoadUrl("https://www.example.com"); // 加载本地Assets文件夹里的HTML文件(需将文件设置为AndroidAsset) webView.LoadUrl("file:///android_asset/your-local-page.html");
注意:别忘了在AndroidManifest.xml里添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
iOS平台(推荐用WKWebView)
1. Storyboard绑定Outlet
在Storyboard里拖入WKWebView,设置Outlet名为Browser。
2. 在ViewController里加载URL
using WebKit; public partial class YourViewController : UIViewController { public YourViewController(IntPtr handle) : base(handle) { } public override void ViewDidLoad() { base.ViewDidLoad(); // 加载远程URL var remoteUrl = new NSUrl("https://www.example.com"); Browser.LoadRequest(new NSUrlRequest(remoteUrl)); // 加载本地Resources文件夹里的HTML文件(需将文件设置为BundleResource) var localFileUrl = NSBundle.MainBundle.GetUrlForResource("your-local-page", "html"); Browser.LoadRequest(new NSUrlRequest(localFileUrl)); } }
如果需要加载HTTP协议的网站,还得在Info.plist里配置ATS例外(不过更推荐用HTTPS)。
内容的提问来源于stack exchange,提问作者Ian Gallegos
相关产品推荐
相关产品推荐

