问题描述
我在Xamarin.Forms中使用WebView来显示html。它不会显示整个html页面,而只会显示通常在html页面的“正文”部分(即<h1>Hello</h1>
)中的内容。
但是,当网页视图显示在页面上时,显示的html太小。另外,存在一个问题,即即使Webview应该覆盖整个页面,它也不能填充整个页面。 *这两个问题在Android中都不会发生。
以下是iOS中Webview显示html方式的一些屏幕截图:
larger html element which does not extend to fill the entire page
<WebView x:Name="webView" HeightRequest="1000" WidthRequest="1000">
<WebView.source>
<HtmlWebViewSource x:Name="announcementHtml"/>
</WebView.source>
</WebView>
在后面的代码中,一个名为“ announcement”的参数传递给页面的构造函数,我使用以下代码访问原始html:
announcementHtml.Html = announcement.Announcement;
等)中进行硬编码,就可以在自己的项目中复制此代码。
我知道使用自定义渲染器是解决这些问题(或至少是html大小问题)的方法,但我不知道如何实现自定义渲染器。
任何帮助将不胜感激!
解决方法
最简单的Webview自定义渲染器,您可以在此处自定义Webview:
[assembly: ExportRenderer(typeof(WebView),typeof(MyWebViewRenderer))]
namespace App379.iOS
{
public class MyWebViewRenderer : WkWebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
this.ContentMode = UIViewContentMode.ScaleToFill;
}
}
}
}