Xamarin表单放大在Web视图中缩小不能流畅工作

时间:2019-06-04 03:46:01

标签: c# xaml xamarin.forms

我是自定义渲染Web视图,因为我加载了Pdf。当该Pdf尝试放大或缩小时。我可以清楚地看到缺乏。 Frist,我以为是Android问题,然后我下载了pdf文件并尝试了可以​​顺利运行。

这是我的代码

在共享项目中

  public class CustomWebView : WebView
{
    public static readonly BindableProperty UriProperty = BindableProperty.Create(nameof(Uri),typeof(string),typeof(CustomWebView),default(string));

    public string Uri
    {
        get => (string)GetValue(UriProperty);
        set => SetValue(UriProperty, value);
    }       
}

在无定形的自定义渲染中

  public class CustomWebViewRenderer : WebViewRenderer
{
    public CustomWebViewRenderer(Context context) : base(context)
    {
    }

    protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
    {
        base.OnElementChanged(e);

        if (e.NewElement != null)
        {              
            Control.Settings.AllowUniversalAccessFromFileURLs = true;                   
            Control.Settings.BuiltInZoomControls = true;
            Control.Settings.DisplayZoomControls = true;

        }
        this.Control.SetBackgroundColor(Android.Graphics.Color.Transparent);
    }
    protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        if (e.PropertyName != "Uri") return;
        var customWebView = Element as CustomWebView;
        if (customWebView != null)
        {
            Control.LoadUrl(string.Format("file:///android_asset/pdfjs/web/viewer.html?file={0}", string.Format("file:///android_asset/Content/{0}", WebUtility.UrlEncode(customWebView.Uri))));        
        }
    }

}

它正在获取pdf,并且也没有问题,但是当放大或缩小时可以清楚地看到闩锁。如何解决该闩锁问题。

Webview中的放大/缩小功能不平滑

1 个答案:

答案 0 :(得分:1)

您可以制作自定义渲染器,也可以使用Xam.Plugin.WebView插件进行javascript注入。下面的代码显示了使用该插件的示例。您可以调用动作来放大和缩小。

Set Ctrl = ActiveSheet.Shapes.AddFormControl(xlDropDown, Left:=Cells(1, 1).Left, Top:=Cells(2, 1).Top, Width:=100, Height:=20)

With Ctrl
    .Name = "CB"
    For Each cell In lst
        .ControlFormat.AddItem cell.Value
    Next cell
    For Each cell In lst2
        .ControlFormat.AddItem cell.Value
    Next cell
End With