Set dynamic height for multiple webviews in a view possible?

I use a customrenderer for webview, found in this forum , that reads out the height of the content and set the the webview height. The problem is, i have to use many webviews on one page, that are bind to HTML sources, so the height is all different and the customrenderer only set the height for the last webview that is rendered. All other webviews are ignored. Here is the code of the Customrenderer i use for Android. How can i set the height dynamic for all webviews?
<br /> public class ExtendWebViewRenderer : WebViewRenderer{<br /> static ExtendedWebView _xwebView = null;<br /> WebView _webView;</p> <pre><code>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) // wait here till content is rendered 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 ExtendedWebView; _webView = Control; if (e.OldElement == null) { _webView.SetWebViewClient(new ExtendedWebViewClient()); } } }

Answers

  • m_pongraczm_pongracz Member

    You have to get rid off the static variable of your ExtendedWebViewRenderer and pass it to the ExtendedWebViewClient in its constructor instead.

Sign In or Register to comment.