我读了一个有关如何使用webview in Xamarin.Android的现有问题,该问题建议在每个受支持的平台上编写平台特定的代码。
理想情况下,我想将我的html存储在Xamarin.Forms中/assets/
中的文件中,而不是为每个操作系统都存储一次。
我希望有一种更简单的方法,并将资产简单地存储在Xamarin.Forms中。有可能吗?
答案 0 :(得分:0)
好吧,如果我是对的,您可以使用资产文件夹中的嵌入式文件来进行处理,然后使用System.IO
进行读取(假设您使用的是NET Standard程序集):
将要读取的文件添加到可移植类的所需文件夹中,并确保 构建操作:EmbeddedResource 。
然后使用GetManifestResourceStream
使用其资源ID访问嵌入式文件,默认情况下,资源ID是文件名,该文件名以其要嵌入的项目的默认名称空间为前缀-在这种情况下,程序集为WorkingWithFiles
,文件名为PCLTextResource.txt,因此资源ID为WorkingWithFiles.PCLTextResource.txt。现在,要获取所需的文件数据,您需要做的就是这样:
var assembly = IntrospectionExtensions.GetTypeInfo(typeof(LoadResourceText)).Assembly;
Stream stream = assembly.GetManifestResourceStream("WorkingWithFiles.PCLTextResource.txt");
string text = "";
using (var reader = new System.IO.StreamReader (stream)) {
text = reader.ReadToEnd ();
}
LoadResourceText
所在的cs文件中,我正在使用此代码来获取当前程序集。请注意,这应该是与您刚刚添加的嵌入式资源存在的程序集相同的程序集,并且WorkingWithFiles.PCLTextResource.txt
是嵌入式资源的程序集路径,例如:如果您的程序集名称为Foo
并且文件为在名为Asset
的文件夹中,那么您的路径将类似于Foo.Asset.Your_File.txt
完成所有这些操作之后,便开始了简单的部分,在WebView页面中定义一个HtmlWebViewSource
并将其分配为WebView和Vola的源!您已经从文件中加载了数据。
var browser = new WebView();
var htmlSource = new HtmlWebViewSource();
htmlSource.Html = ;//your html string here
browser.Source = htmlSource;
检查How to work with files以获得更多信息。
答案 1 :(得分:0)
我找到了使其工作的方法:
在RightClickOnProject/Properties/Resources
中,有一个视图允许添加文件,这些文件可用作Xamarin.Forms中的资源。我在那里添加了一个HtmlFile.txt
文件。
我通过以下方式将WebView添加到xaml
:
<ContentPage.Content>
<StackLayout>
<WebView x:Name="Web" VerticalOptions="FillAndExpand" />
</StackLayout>
</ContentPage.Content>
然后在后面的代码中执行:
public partial class OurPage: ContentPage
{
public OurPage()
{
InitializeComponent();
Web.Source = new HtmlWebViewSource{Html = Properties.Resources.HtmlFile};
}
}