Xamarin 我需要从文件中加载HTML和CSS(不同于ANDROID和IOS)并在WebView中显示?
请参阅我下面的评论,然后再将此标记为另一个问题的完全副本,该问题并不寻找相同的内容 到目前为止,我已经尝试像这样在本地加载:Xamarin 我需要从文件中加载HTML和CSS(不同于ANDROID和IOS)并在WebView中显示?,xamarin,xamarin.forms,Xamarin,Xamarin.forms,请参阅我下面的评论,然后再将此标记为另一个问题的完全副本,该问题并不寻找相同的内容 到目前为止,我已经尝试像这样在本地加载: <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:Japanese;assembly=Test" x:Class="
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:Japanese;assembly=Test"
x:Class="Test.HelpCards"
x:Name="HelpCards"
Title="Help ▹ Cards Tab">
<ContentPage.Content>
<WebView x:Name="Browser" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />
</ContentPage.Content>
</ContentPage>
public HelpCards()
{
InitializeComponent();
var htmlSource = new HtmlWebViewSource();
htmlSource.Html = @"<html><body>
<h1>ABC</h1>
<p>DEF</p>
</body></html>";
Browser.Source = htmlSource;
}
我的HTML是这样的:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="styles.css">
</head>
<body>
Hello again
<h1>hihi</h1>
</body>
</html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="styles.css">
</head>
[assembly: Dependency(typeof(AppNamespace.Droid.BaseUrl))]
namespace AppNamespace.Droid
{
public class BaseUrl : IBaseUrl
{
public string Get()
{
return "file:///android_asset/";
}
}
}
[assembly: Dependency(typeof(AppNamespace.iOS.BaseUrl))]
namespace AppNamespace.iOS
{
public class BaseUrl : IBaseUrl
{
public string Get()
{
return NSBundle.MainBundle.BundlePath;
}
}
}
WebView
设置为使用共享html文件,同时使用特定于平台的css,这是通过BaseUrl
指定的
var assembly = typeof(AppNamespace.App).GetTypeInfo().Assembly;
var stream = assembly.GetManifestResourceStream("AppNamespace.Common.html");
string html = string.Empty;
using (var reader = new System.IO.StreamReader(stream))
{
html = reader.ReadToEnd();
}
var source = new HtmlWebViewSource()
{
BaseUrl = DependencyService.Get<IBaseUrl>().Get(),
Html = html
};
webView.Source = source;
var assembly=typeof(AppNamespace.App).GetTypeInfo().assembly;
var stream=assembly.GetManifestResourceStream(“AppNamespace.Common.html”);
string html=string.Empty;
使用(var reader=new System.IO.StreamReader(stream))
{
html=reader.ReadToEnd();
}
var source=新的HtmlWebViewSource()
{
BaseUrl=DependencyService.Get().Get(),
Html=Html
};
webView.Source=Source;
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="styles.css">
</head>
[assembly: Dependency(typeof(AppNamespace.Droid.BaseUrl))]
namespace AppNamespace.Droid
{
public class BaseUrl : IBaseUrl
{
public string Get()
{
return "file:///android_asset/";
}
}
}
[assembly: Dependency(typeof(AppNamespace.iOS.BaseUrl))]
namespace AppNamespace.iOS
{
public class BaseUrl : IBaseUrl
{
public string Get()
{
return NSBundle.MainBundle.BundlePath;
}
}
}
WebView
设置为使用共享html文件,同时使用特定于平台的css,这是通过BaseUrl
指定的
var assembly = typeof(AppNamespace.App).GetTypeInfo().Assembly;
var stream = assembly.GetManifestResourceStream("AppNamespace.Common.html");
string html = string.Empty;
using (var reader = new System.IO.StreamReader(stream))
{
html = reader.ReadToEnd();
}
var source = new HtmlWebViewSource()
{
BaseUrl = DependencyService.Get<IBaseUrl>().Get(),
Html = html
};
webView.Source = source;
var assembly=typeof(AppNamespace.App).GetTypeInfo().assembly;
var stream=assembly.GetManifestResourceStream(“AppNamespace.Common.html”);
string html=string.Empty;
使用(var reader=new System.IO.StreamReader(stream))
{
html=reader.ReadToEnd();
}
var source=新的HtmlWebViewSource()
{
BaseUrl=DependencyService.Get().Get(),
Html=Html
};
webView.Source=Source;
PCL项目不包含资产/捆绑资源等。。除非它们是基于程序集的嵌入式资源,否则您始终可以嵌入HTML文件并将其加载到字符串中,并将其分配给您的
WebView
,就平台相关CSS而言,将其加载到基于平台相关方法的字符串中,并在将字符串应用到WebViewPCL项目不包含资产/捆绑资源/等之前将CSS注入HTML字符串。。除非它们是基于程序集的嵌入式资源,否则您始终可以嵌入HTML文件并将其加载到字符串中,然后将其分配给WebView
,对于依赖于平台的CSS,请根据依赖于平台的方法将其加载到字符串中,并在将字符串应用到WebView之前将CSS注入HTML字符串谢谢,我会尝试一下,如果我有任何问题,我会告诉你。我已经尝试了你的答案,但是看起来css文件没有包含在资源包中,或者它没有被调用。我在示例中也注意到了同样的情况:我对default.css所做的任何更改都不会反映在我看到的内容中。如果你能试试这个,如果你看到同样的东西,请告诉我,我将不胜感激。请注意,到目前为止我只尝试了iOS。ThanksI更新了问题,以显示我遇到的问题。对其进行了测试-它按预期工作。是否存在名称不匹配问题?您可以在此重新生成时访问代码,所有这些代码都修复了问题。谢谢谢谢,我会尝试一下,如果我有任何问题,我会告诉你。我已经尝试了你的答案,但是看起来css文件没有包含在资源包中,或者没有被调用。我在示例中也注意到了同样的情况:我对default.css所做的任何更改都不会反映在我看到的内容中。如果你能试试这个,如果你看到同样的东西,请告诉我,我将不胜感激。请注意,到目前为止我只尝试了iOS。ThanksI更新了问题,以显示我遇到的问题。对其进行了测试-它按预期工作。是否存在名称不匹配问题?您可以在此重新生成时访问代码,所有这些代码都修复了问题。谢谢