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

顶嘴使 CardView 可访问

如何解决顶嘴使 CardView 可访问

我想让我的 CardView 更易于访问。我有可点击的 CardView,我想对讲用角色“按钮”来表达这个 CardView。我不知道该怎么做。

private fun setAccessibilityDescription(view: View) {
        ViewCompat.setAccessibilityDelegate(view,object : AccessibilityDelegateCompat() {

            override fun onInitializeAccessibilityNodeInfo(host: View,info: AccessibilityNodeInfoCompat) {
                super.onInitializeAccessibilityNodeInfo(host,info)
                info.className = Button::class.java.name
            }
        })
    }

我尝试使用 ViewCompat 并覆盖 onInitializeAccessibilityNodeInfo,它对我有帮助,但并不完全。角色“按钮”总是先发声,尽管对讲通常最后说“按钮”,真正的按钮。总比没有好,但是我怎样才能让 TalkBack 像按钮一样听起来像我的 CardView

解决方法

我尝试了不同的方法,我认为对讲 api 不支持设置自定义对象,如按钮。对于我的解决方案,我选择使用 contentDescription,我只是在 contentDescription 我的对象的末尾添加单词“button”

private fun setAccessibilityViewTypeInfo(view: View,contentDescription: String) {
        ViewCompat.setAccessibilityDelegate(view,object : AccessibilityDelegateCompat() {

            override fun onInitializeAccessibilityNodeInfo(host: View,info: AccessibilityNodeInfoCompat) {
                super.onInitializeAccessibilityNodeInfo(host,info)
                info.contentDescription = host.context.resources.getString(
                    designR.string.talkback_button_pattern,contentDescription
                )
            }
        })
    }

在我的代码 contentDescription 中,它是 CardView 和 talkback_button_pattern 中的所有文本

<string name="talkback_button_pattern">%1$s,button</string>

我了解人们可以在设置中更改对讲行为。 根据设置,“按钮”这个词可以在配音的结尾或开头,我的解决方案不支持这种情况。但总比没有好

,

这是可能的!您需要角色描述而不是 className。通过调用 setRoleDescription,您可以将其设置为按钮。

例如:

info.roleDescription = getString(R.string.button)

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