Search code examples
androidaccessibilitytalkback

TalkBack. Make CardView accessibility


I want make my CardView more accessibility. I have clickable CardView and i want talkback voiced this CardView with role "button". I dont know how to do it.

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
            }
        })
    }

I tryed use ViewCompat and override onInitializeAccessibilityNodeInfo, it is helped me but not fully. Role "button" always voiced first, although talkback usually say "button" last with real button. It's better than nothing, but how can I make the TalkBack sound my CardView like a button


Solution

  • This is possible! Instead of className, you need a role description. By calling setRoleDescription, you can set this as Button.

    For example:

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