微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 Xamarin 的 ViewCompat 中将我的 SimplestExploreByTouchHelper 设置为 AccessibilityDelegate?

如何解决如何在 Xamarin 的 ViewCompat 中将我的 SimplestExploreByTouchHelper 设置为 AccessibilityDelegate?

我对 TalkBack 功能比较陌生,需要帮助。 我有一个 Xamarin 应用,当 TalkBack 功能处于活动状态时,我需要它来处理 DPAD 按键事件(向上、向下、向左、向右)。

当然,这是一个相当新的选项,在我的 Xamarin 应用程序使用的非本机组件上没有任何信息,没有,nada,没有关于此的任何信息,我不得不将代码从 java 转换为 c#。

关注这个网站:https://developer.android.com/training/tv/accessibility/non-native-best-practices

我已经做了我能做的,但是我必须将最后一个函数解释为 c#,这就是问题所在。

Java 代码

private void init(@Nullable AttributeSet attrs) {
    ...
    ViewCompat.setAccessibilityDelegate(this,new SimplestExploreByTouchHelper(this));
}

我假设我必须在 OnCreate 函数内的 MainActivity.cs 文件调用函数。 但是,由于那是 Java,我必须将其转换为 C#:

C#

 protected override void OnCreate(Bundle savedInstanceState)
 {
     ...
     SimplestCustomView scv = new SimplestCustomView(this.ApplicationContext);
     var helper = new SimplestExploreByTouchHelper(scv);
     ViewCompat.SetAccessibilityDelegate(mGfxSurface,helper);
 }

而且,一如既往,我有一个问题需要帮助。有错误

Argument 2: cannot convert from 'MyApp.SimplestExploreByTouchHelper' to 'AndroidX.Core.ViewAccessibilityDelegateCompat'

几乎没有关于如何使用 Xamarin 在非本机组件中实现 TalkBack 功能的信息。

您能帮我解答以下问题吗?

  1. 如何转换?
  2. 是否应该从 MainActivity.cs OnCreate 函数调用函数

我的目标是让我的应用程序处理 DPAD 按键按下事件,而不是在无障碍服务器处理 TalkBack 时处理这些事件。 此处描述了该问题:https://developer.android.com/training/tv/accessibility/non-native-app

解决方法

如何转换?

    private void init(IAttributeSet attrs) {
        ViewCompat.SetAccessibilityDelegate(this,new SimplestExploreByTouchHelper(this));
    }

是否应该从 MainActivity.cs OnCreate 函数中调用该函数?

这个函数应该放在自定义视图类SimplestCustomView中。

并确保 SimplestExploreByTouchHelper 在您的代码中继承自 ExploreByTouchHelper

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。