C# 如何在Xamarin.Forms中设置android id属性?

C# 如何在Xamarin.Forms中设置android id属性?,c#,android,xamarin,xamarin.forms,C#,Android,Xamarin,Xamarin.forms,我需要访问共享Xamarin.Forms代码之外由Xamarin.Forms创建的视图 如何在Xamarin.Forms中设置android id属性?获取android id的一种方法是通过自定义渲染器。例如,如果所讨论的视图是Xamarin.Forms.Editor,您可以按如下方式向应用程序添加自定义渲染器: 首先,在Xamarin.Forms项目中,添加一个从要从中获取id的视图派生的类: namespace MyApp { public class CustomEditor :

我需要访问共享Xamarin.Forms代码之外由Xamarin.Forms创建的视图


如何在Xamarin.Forms中设置android id属性?

获取android id的一种方法是通过自定义渲染器。例如,如果所讨论的视图是Xamarin.Forms.Editor,您可以按如下方式向应用程序添加自定义渲染器:

首先,在Xamarin.Forms项目中,添加一个从要从中获取id的视图派生的类:

namespace MyApp
{
    public class CustomEditor : Editor
    {
    }
}
请注意,这个类没有添加任何新成员,它只是定义一个新类型,我们需要将自定义呈现程序与之关联

然后,在Xamarin Android项目中,添加自定义渲染器并将其与自定义视图类型关联:

using System;
using MyApp;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;


[assembly: ExportRenderer(typeof(CustomEditor), typeof(CustomEditorRenderer))]

namespace MyApp.Android
{
    class CustomEditorRenderer : EditorRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.Editor> e)
        {
            base.OnElementChanged(e);

            int androidId = this.Id; // android widget id
            Guid xamarinId = e.NewElement.Id; // xamarin view id

        }
    }
使用系统;
使用MyApp;
使用Xamarin.Forms;
使用Xamarin.Forms.Platform.Android;
[assembly:ExportRenderer(typeof(CustomEditor)、typeof(CustomEditorRenderer))]
名称空间MyApp.Android
{
类CustomEditorRenderer:EditorRenderer
{
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
int androidId=this.Id;//android小部件Id
Guid xamarinId=e.NewElement.Id;//xamarin视图Id
}
}
在该自定义呈现程序中,您现在可以访问与Xamarin表单视图关联的底层Android小部件。这意味着您也可以访问Android.id属性

请注意:

  • 要使其工作,在Xamarin.Forms UI中,您需要使用CustomEditor而不是stock Editor类
  • 并非所有Xamarin表单视图都具有可从中派生的自定义呈现器。某些呈现器(如ListViewRenderer)是内部类,不支持在代码中继承。在这些情况下,您不能使用此技术

我也想知道