使用onPopulateAccessibilityEvent和AccessibilityDelegate在recyclerview中自定义辅助功能

时间:2018-01-25 15:45:09

标签: android kotlin accessibility

我正在尝试为RecyclerView中的项目自定义对讲输出。我修改了onBindViewHolder方法以包含以下代码

       itemView?.setAccessibilityDelegate(object: View.AccessibilityDelegate() {
            override fun onPopulateAccessibilityEvent(host: View?, event: AccessibilityEvent?) {
                super.onPopulateAccessibilityEvent(host, event)
                event?.let {event ->
                    if (event.eventType == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
                        event.text.add("Hello world!")
                    }
                }
            }
        })

不幸的是,只对RecyclerView中的最后一个可见项修改了对讲输出。

我不明白为什么委托适用于某些ViewHolders而非其他人。

1 个答案:

答案 0 :(得分:1)

RecyclerView向其子项添加AccessibilityDelegates以向其添加自己的操作。由于一个视图最多可以包含一个代理,无论先添加哪一个(你的或RecyclerView的代理)都会被破坏。

RecyclerView的{​​{3}} AccessibilityDelegate适用于其子女。这就是你想要的。