将Xamarin.Forms中存储的html资产加载到Web视图中

时间:2018-11-27 13:15:24

标签: xamarin webview xamarin.forms

我读了一个有关如何使用webview in Xamarin.Android的现有问题,该问题建议在每个受支持的平台上编写平台特定的代码。

理想情况下,我想将我的html存储在Xamarin.Forms中/assets/中的文件中,而不是为每个操作系统都存储一次。

我希望有一种更简单的方法,并将资产简单地存储在Xamarin.Forms中。有可能吗?

2 个答案:

答案 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};
    }
}