android - 如何将可访问性焦点转移到 RecyclerView 在某些操作上的第一个元素上?
问题描述
我是 android 可访问性的新手 - TalkBack
. 我知道基本的东西contentDescription
,importantForAaccessibility
以及它们如何制作节点树等。
在我的问题中,我想将可访问性的重点转移RecyclerView
到某些操作的第一个元素上。
通常someView.requestFocus()
或someView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
工作。但它似乎没有按预期工作RecyclerView
。
我试图通过以下方式解决它:
android:accessibilityLiveRegion="polite"
但它只宣布该列表在那里。但它不会出现在具有可访问性焦点的元素上。通过聚焦适配器的第一个元素 - 但这样做是个坏主意!
除此之外,android:accessibilityTraversalAfter
也不android:accessibilityTraversalBefore
适用于 android 中的列表视图。
someView.requestFocus()
someView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
解决方案
RecyclerView 的getChildAt()
方法对我有用。
recyclerView.getChildAt(0).requestFocus()
recyclerView.getChildAt(0).sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
推荐阅读
- mysql - Laravel 获取用户不喜欢的帖子
- javascript - 单击元素外的任何位置时删除类
- umbraco - Umbraco 块列表未显示在数据类型列表中
- python - 在数据框 pandas 中使用 groupby 和自定义 agg
- rust - 如何选择或加入不同类型的期货?
- c# - Specflow 场景大纲 - 更改自动生成的测试名称
- java - Apple AWT 内部异常:NSWindow 拖动区域应该只在主线程上无效
- php - 特殊“特殊”字符支持 HTML(在电子邮件中)
- php - Laravel foreach json column query
- c# - Dapperplus add round to bulkinsert