我在Droid项目中实现了一个自定义的web视图呈现器。问题是,自定义WebView在模拟器中工作,而不在物理设备中工作。
在物理设备中,WebView只加载第一次,而不是第二次。尽管android版本是相同的,物理设备和模拟器有不同的结果。
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());
}
}
}任何帮助都是非常感谢的。谢谢!
发布于 2022-08-04 09:52:43
我又在小米MI 6X Android 9上测试了它。它仍然可以很好地工作,无论多少次我进入网络视图。
所以我建议你在第二次进入webview时下载android来查看日志。
您也可以尝试在不同的设备上测试它,这些设备有不同的android版本。
https://stackoverflow.com/questions/73229657
复制相似问题