【发布时间】:2020-05-13 19:40:30
【问题描述】:
我从后端获取外部页面 HTML 代码作为字符串
并在 Xamarin 表单应用程序的 Web 视图中显示它
现在我想给它设置样式
我想知道最有效的方法是什么?
是否可以像 Xamarin 页面使用 XAML 和共享资源设置样式一样设置样式?
到目前为止,我尝试在共享资源中引用一个 CSS 文件,但我发现它不起作用...
htmlData = "<link rel=\"stylesheet\" type=\"text/css\"href=\"Assets\"Styles\"style.css\" />" + htmlData;
htmlSource.Html = htmlData;
myWebView.Source = htmlSource;
更新
我最终为 Webview 使用了自定义渲染器
适用于 Android 但不适用于 IOS
这是我的渲染器的IOS实现
[assembly: ExportRenderer(typeof(CustomWebView), typeof(CustomWebViewRenderer))]
namespace XXX.iOS.Renderers
{
public class CustomWebViewRenderer : WkWebViewRenderer
{
WKUserContentController userController;
public CustomWebViewRenderer() : this(new WKWebViewConfiguration())
{
}
public CustomWebViewRenderer(WKWebViewConfiguration config) : base(config)
{
userController = config.UserContentController;
}
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
var customWebView = e.NewElement as CustomWebView;
if (e.NewElement != null)
{
string htmldata = customWebView.HTMLData;
htmldata = "<link rel=\"stylesheet\" type=\"text/css\" href=\"StyleSheet.css\" />" + htmldata;
WkWebViewRenderer wkWebViewRenderer = new WkWebViewRenderer();
NSData data = NSData.FromString(htmldata);
wkWebViewRenderer.LoadData(data,"text/html", "UTF-8",new NSUrl(""));
}
}
}
}
注意:我不知道这里的 IOS 代码发生了什么,因为我从来没有用母语编写过代码
【问题讨论】:
标签: css xamarin.forms webview