当我们使用TAB导航到下一个字段时,对讲不会宣布

时间:2019-02-07 11:10:01

标签: android accessibility android-accessibility

让我们假设我在两个EditText之间有一个TextView。

仅当在FocusChange上对文本进行EditText评估之后,仅当某些条件通过时TextView才可见。

当我使用自定义动态文本使其可见时,我调用textView.announceForAccessibility(动态字符串)来宣布内容。

当我使用TAP手势或SWIPE手势从editTextUnderEvaluation移到另一个anotherEditText时,此方法很好用。 notifyForAccessibility宣布我的动态字符串。

但是当我使用键盘并使用TAB从editTextUnderEvaluation移至anotherEditText时,它不会宣布我的动态字符串。

我尝试使用

  
      
  1. accessibilityLiveRegion
  2.   
  3. accessibilityTraversal之后/之前
  4.   
  5. 创建和发送新的可访问性ANNOUNCE事件
  6.   

这些都不起作用。

我的假设-当我使用TAB从editTextUnderEvaluation移至anotherEditText时,Android虚拟键盘对讲中断了我的通知。有什么方法可以将键盘对讲更改为礼貌模式。

1 个答案:

答案 0 :(得分:0)

我找到了问题和解决方案。回答以供参考。

当您使用TAB从一个编辑文本导航到另一编辑文本时,EditText组件会发出类型为TYPE_VIEW_FOCUSED的公告,该公告将读出“ Editing edittext ...”。这是一个高优先级的公告,它会中断所有应该在其之前发生的公告。由于我的文字视图声明在TYPE_VIEW_FOCUSED之前用于第二个编辑文本,所以这也被打断了。

所以不是我想的那样,是键盘打断了语音。

我要解决的问题是在EditText中重写onInitializeAccessibilityEvent()方法,并跳过TYPE_VIEW_FOCUSED的事件,并为此事件发送我自己的自定义公告。