我有一个解锁屏幕,提示用户输入一个四位数的密码。如果用户错误地输入了他们的密码,TextView
则会显示以前不可见的内容和错误消息。此时,TalkBack 可以大声读出错误消息的内容。
通过一些实验,我意识到我可以设置android:focusableInTouchMode="true"
视图并以编程方式调用View#requestFocus()
. 这第一次有效,但由于视图已经具有焦点,因此在后续错误中失败。此外,一般来说,覆盖当前视图焦点似乎是个坏主意。
然后我尝试View#announceForAccessibility(java.lang.CharSequence)
在显示错误消息时调用。显然,如果视图当前不可见,此方法将静默失败。没问题,否则它工作得很好。但是,它仅在 API 级别 16+(Jelly Bean)中可用,这确实限制了它的实用性。由于 TalkBack 支持 API 级别 7+,因此必须有更好的解决方案。
我已经观看了 2011 年和 2012 年关于可访问性的 Google I/O 会议,但似乎都没有涵盖这个基本用例。最好的方法是什么?
编辑 1: TLDR;有没有办法强制View#announceForAccessibility(java.lang.CharSequence)
TalkBack 在引入Jelly Bean之前大声朗读一些文本?