如何解决 WebViewRenderer 已过时

Fav*_*uel 2 xaml xamarin.forms

这就是我得到的错误“WebViewRenderer.WebViewRenderer() 已过时

“这个构造函数从 2.5 版开始已经过时了。请改用 WebViewRenderer(Context)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Xamarin.Forms;
using ZoomWebView;
using Xamarin.Forms.Platform.Android;
using ZoomWebView.Droid;
using System.ComponentModel;
using Android.Webkit;
using Xamarin.Forms.PlatformConfiguration.AndroidSpecific;
using Xamarin.Forms.Internals;
using System.Threading.Tasks;

[assembly: ExportRenderer(typeof(MyWebView), typeof(MyWebViewRenderer))]


  namespace ZoomWebView.Droid
 {
     public class MyWebViewRenderer : WebViewRenderer
{

    protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
    {
        base.OnElementChanged(e);
        if (e.OldElement != null || Element == null)
        {
            return;
        }
        var element = Element as MyWebView;
        Control.Settings.TextZoom = element.ZoomInLevel;
    }

    protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        if(Control != null)
        {
            Control.Settings.BuiltInZoomControls = true;

            Control.Settings.DisplayZoomControls = true;
        }
        var element = Element as MyWebView;
        Control.Settings.TextZoom = element.ZoomInLevel;
        base.OnElementPropertyChanged(sender, e);
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望代码能够运行,因为我在 youtube 上关注了一个特定的系列,但事实并非如此。请问有什么我做错了吗?

Bru*_*iro 8

您需要添加上下文:

public MyWebViewRenderer(Context context) : base(context)
{
}
Run Code Online (Sandbox Code Playgroud)

在您的代码中:

  namespace ZoomWebView.Droid
 {
    public class MyWebViewRenderer : WebViewRenderer
    {
        public MyWebViewRenderer(Context context) : base(context)
        {
        }


        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
        {
            base.OnElementChanged(e);
            if (e.OldElement != null || Element == null)
            {
                return;
            }
            var element = Element as MyWebView;
            Control.Settings.TextZoom = element.ZoomInLevel;
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if(Control != null)
            {
                Control.Settings.BuiltInZoomControls = true;

                Control.Settings.DisplayZoomControls = true;
            }
            var element = Element as MyWebView;
            Control.Settings.TextZoom = element.ZoomInLevel;
            base.OnElementPropertyChanged(sender, e);
        }
    }
 }
Run Code Online (Sandbox Code Playgroud)