gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:11:34 24 4
gpt4 key购买 nike

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

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

最佳答案

获取 Android id 的一种方法是通过自定义渲染器。例如,如果所讨论的 View 是 Xamarin.Forms.Editor,您可以按如下方式将自定义呈现器添加到您的应用:

首先,在您的 Xamarin.Forms 项目中,添加一个派生自您希望从中获取 ID 的 View 的类:

namespace MyApp
{
public class CustomEditor : Editor
{
}
}

请注意,此类不会添加任何新成员,它只是用来定义我们需要将自定义渲染器与之关联的新类型。

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

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 View 关联的底层 Android 小部件。这意味着您也可以获得 Android .id 属性。

请注意:

  • 为此,在您的 Xamarin.Forms UI 中,您需要使用您的 CustomEditor 而不是常用的 Editor 类
  • 并非所有 Xamarin Forms View 都具有您可以从中派生的自定义呈现器。有些,如 ListViewRenderer 是内部类,不支持在您的代码中继承。在这些情况下,您不能使用此技术。

关于c# - 如何在 Xamarin.Forms 中设置 android id 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27985043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com