如何在Xamarin.Forms中设置Android ID属性?

8

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

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


我也很想知道。 - MyKuLLSKI
1个回答

4

获取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

        }
    }

通过自定义渲染器,您现在可以访问与 Xamarin Forms 视图相关联的底层 Android 部件。这意味着您也可以获取 Android .id 属性。

请注意:

  • 为了使其正常工作,在您的 Xamarin.Forms UI 中,您需要使用自定义编辑器而不是默认的 Editor 类
  • 并非所有的 Xamarin Forms 视图都有可继承的自定义渲染器,例如 ListViewRenderer 是内部类,不支持在代码中继承。在这些情况下,您无法使用此技术。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接