Android 使用onPopulateAccessibilityEvent和AccessibilityDelegate自定义RecycleView中的可访问性
我正在尝试为RecyclerView中的项目定制对讲输出。我修改了Android 使用onPopulateAccessibilityEvent和AccessibilityDelegate自定义RecycleView中的可访问性,android,kotlin,accessibility,Android,Kotlin,Accessibility,我正在尝试为RecyclerView中的项目定制对讲输出。我修改了onBindViewHolder方法,以包含以下代码 itemView?.setAccessibilityDelegate(object: View.AccessibilityDelegate() { override fun onPopulateAccessibilityEvent(host: View?, event: AccessibilityEvent?) {
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
中最后一个可见项进行了修改
我不明白为什么代理只适用于某些
视图持有者
而不适用于其他人。RecyclerView
将AccessibilityDelegates
添加到其子级,以向其添加自己的操作。因为一个视图最多只能有一个委托,所以无论是先添加的委托(您的委托还是为RecyclerView
添加的委托)都会被删除
RecyclerView
具有可访问性Legate的功能,适用于其子项。这就是你想要的。androidx链接: