如何解决顶嘴使 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 举报,一经查实,本站将立刻删除。