我已经在Droid项目中实现了一个定制的Web视图呈现器.问题是,Custom WebView在模拟器中工作,而不在物理设备中工作.
在物理设备中,WebView仅加载第一次,而不是第二次.即使Android版本相同,物理设备和模拟器的结果也不同.
你可以在这个链接中看到完整的代码Github
public class MyWebViewRenderer : WebViewRenderer
{
public MyWebViewRenderer(Context context) : base(context) { }
static MyWebView _xwebView = null;
WebView _webView;
class ExtendedWebViewClient : Android.Webkit.WebViewClient
{
public override async void OnPageFinished(WebView view, string url)
{
if (_xwebView != null)
{
int i = 10;
while (view.ContentHeight == 0 && i-- > 0)
await System.Threading.Tasks.Task.Delay(10);
_xwebView.HeightRequest = view.ContentHeight;
}
base.OnPageFinished(view, url);
}
}
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
_xwebView = e.NewElement as MyWebView;
_webView = Control;
if (e.OldElement == null)
{
_webView.SetWebViewClient(new ExtendedWebViewClient());
}
}
}
如有任何帮助,我们不胜感激.谢谢!