如何将 Xamarin.Forms WebView 对象转换为特定于平台的 WebView 对象?

彼得

我在 Xamarin.Forms 中创建了一个 WebView 对象:

WebView webView = new WebView {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand
        };

我需要对这个对象执行一些特定于平台的操作:调用一些在 Xamarin.Forms 中不可用的函数,因为它在不同平台上的性质不同。

问题是,当我传递 Xamarin.Forms 对象时:

public interface IWebViewCallCSharp
{
    void passWebView(WebView webView);
}

我可以在“本机方面”做与在 Xamarin.Forms 中完全相同的事情。如何在各个平台上获取WebView的一些特定平台功能?如何将这个转换这个

兹维列夫·叶夫根尼

您将需要实现所谓的自定义渲染器。从这里开始:实现 HybridWebView

简而言之,您将需要:

  1. 创建 HybridWebView 自定义控件。
  2. 从 Xamarin.Forms 使用 HybridWebView。
  3. 在每个平台上为 HybridWebView 创建自定义渲染器。

在最后一步你需要

  1. 创建呈现自定义控件的 ViewRenderer 类的子类。第一个类型参数应该是渲染器用于的自定义控件,在本例中为 HybridWebView。第二个类型参数应该是将实现自定义视图的本机控件。
  2. 覆盖呈现自定义控件的 OnElementChanged 方法并编写逻辑以对其进行自定义。在创建相应的 Xamarin.Forms 自定义控件时调用此方法。
  3. 将 ExportRenderer 特性添加到自定义呈现器类,以指定它将用于呈现 Xamarin.Forms 自定义控件。此属性用于向 Xamarin.Forms 注册自定义呈现器。

您开始使用本机控件的起点是OnElementChanged覆盖。

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

  if (Control == null) {
    // Instantiate the native control and assign it to the Control property
  }

  if (e.OldElement != null) {
    // Unsubscribe from event handlers and cleanup any resources
  }

  if (e.NewElement != null) {
    // Configure the control and subscribe to event handlers
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

xamarin.forms处理WebView上的Clicked事件

Xamarin Forms-使webview返回

如何从ContentView访问Xamarin Forms App对象

Xamarin Forms WebView地理位置问题

iOS 11.1.2上的Xamarin.Forms:Webview加载更大的字体

如何在Xamarin Forms应用程序的WebView中禁用复制粘贴选项?

Xamarin.forms在Webview中显示PDF无法正常工作

Xamarin.Forms使用WebView发出Http POST请求

Xamarin.forms:WebView比例尺不起作用

将Xamarin.Forms中存储的html资产加载到Webview中

如何在UWP上的Xamarin.Forms WebView中启用WebGL?

如何在Xamarin.Forms中修改WebView以在设备上的浏览器中打开链接?

如何在C#Xamarin for WebView中实例化JavaScript对象

Xamarin Forms Webview html视频无法在iOS设备上播放

Xamarin.Forms WebView,WKWebViewConfiguration和发送“移动”标头

在Xamarin.Forms WebView中执行Javascript

如何处理Xamarin.forms Webview中的加载错误

Xamarin.Forms.WebView-获取显示页面的标题?

如何在Xamarin.Forms中的Android WebView上启用本地存储

Xamarin.Forms Webview不显示来自URL的响应HTML

在 xamarin Forms 中,如何在返回时停止 webview youtube 视频?

Xamarin Forms:在滚动时禁用 webview 中的拉伸(IOS)

如何在 Xamarin.Forms uwp 中设置 webview 的动态高度?

如何使用 Xamarin.Forms 中的 WebView 在没有全屏模式的 iPhone 中播放视频?

Xamarin Forms:如何增加 webview 中内容的字体大小?

Xamarin Forms:使用 Webview 显示 PDF 文件的问题

允许弹出窗口在 Xamarin Forms WebView 中工作

如何從 Xamarin Forms 中的 webview 攔截“重定向 URL”

在 ListView 如何将单击的对象发送回视图模型中的命令 - Xamarin Forms