【问题标题】:Talkback doesn't announce 'press select to activate' for a Button对讲没有宣布按钮的“按选择激活”
【发布时间】:2020-03-19 17:34:35
【问题描述】:

当用户导航到DialogFragment 时,我想给出以下对讲事件序列,

1) 在导航到DialogFragment 时,初始焦点应该在正按钮上

2) 对话框的标题+描述应该被宣布而不是关注它是TextView

2) 最后它应该读出正面Button的内容描述

override fun onResume() {
        super.onResume()
        positiveButton.contentDescription = "OK"
        positiveButton.announceForAccessibility(dialogArguments.title+dialogArguments.message)
        positiveButton.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT)
        ViewCompat.setAccessibilityDelegate(positiveButton, object : AccessibilityDelegateCompat() {
            override fun onPopulateAccessibilityEvent(host: View?, event: AccessibilityEvent?) {
                super.onPopulateAccessibilityEvent(host, event)
                event?.text?.clear()
                positiveButton.performAccessibilityAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS, null)
            }
        })
    }

上面的代码按要求的顺序工作,但它没有宣布类类型,即按钮和动作描述“按下选择激活”在最后

【问题讨论】:

    标签: android accessibilityservice talkback accessibility


    【解决方案1】:

    这里有很多代码试图控制 TalkBack 用户体验。我们通常建议只向无障碍 API 提供正确的信息,并允许 TalkBack 处理与用户的通信。

    我们建议根本不要尝试设置辅助功能焦点。在每个可访问性事件上设置它可能会导致一些非常不受欢迎的副作用。

    如果您只是删除所有这些代码,如果按钮没有文本(尽管可能在 xml 中),可能会删除内容描述?

    我们知道,TalkBack 在对话框中的初始焦点并不总是最佳的,但由于 TalkBack 做到了,它应该在各个应用程序中保持一致。如果我们找到更好的解决方案,那么它在应用程序中的表现将始终如一。每当 TalkBack 更改时,此类代码的解决方法可能会中断。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 2022-08-20
      • 2022-01-20
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多