让我们假设我在两个EditText之间有一个TextView。
仅当在FocusChange上对文本进行EditText评估之后,仅当某些条件通过时TextView才可见。
当我使用自定义动态文本使其可见时,我调用textView.announceForAccessibility(动态字符串)来宣布内容。
当我使用TAP手势或SWIPE手势从editTextUnderEvaluation移到另一个anotherEditText时,此方法很好用。 notifyForAccessibility宣布我的动态字符串。
但是当我使用键盘并使用TAB从editTextUnderEvaluation移至anotherEditText时,它不会宣布我的动态字符串。
我尝试使用
- accessibilityLiveRegion
- accessibilityTraversal之后/之前
- 创建和发送新的可访问性ANNOUNCE事件
这些都不起作用。
我的假设-当我使用TAB从editTextUnderEvaluation移至anotherEditText时,Android虚拟键盘对讲中断了我的通知。有什么方法可以将键盘对讲更改为礼貌模式。
答案 0 :(得分:0)
我找到了问题和解决方案。回答以供参考。
当您使用TAB从一个编辑文本导航到另一编辑文本时,EditText组件会发出类型为TYPE_VIEW_FOCUSED的公告,该公告将读出“ Editing edittext ...”。这是一个高优先级的公告,它会中断所有应该在其之前发生的公告。由于我的文字视图声明在TYPE_VIEW_FOCUSED之前用于第二个编辑文本,所以这也被打断了。
所以不是我想的那样,是键盘打断了语音。
我要解决的问题是在EditText中重写onInitializeAccessibilityEvent()方法,并跳过TYPE_VIEW_FOCUSED的事件,并为此事件发送我自己的自定义公告。