我有一个页面,用户需要在其中输入电子邮件,然后单击底部的按钮进行确认。确认电子邮件时,屏幕上会显示ProgressDialog
叠加层。当将无效的电子邮件输入到EditText
中时,就像仅输入字母“ a”一样,错误消息将以TextView的形式出现在EditText下方。我正在尝试使此页面更易于访问。
我打算的方法是让TalkBack模式集中在错误文本出现时。但是,这不是很有效。相反,当取消ProgressDialog
叠加层时,“话语提示”未选择屏幕上的任何内容,我注意到“确认”按钮仍处于选中状态,并且我听到应用程序再次宣布应用程序名称,就像活动将被重新创建(尽管不是)。此时向右滑动即可选择屏幕上的第一个视图。值得注意的是,未打开对讲模式时,确认按钮似乎没有保持“选定”状态,就像打开对讲模式时一样。
这是我尝试过的代码:
private fun onServerResult() {
...
dismissDialogOverlay()
if (error) {
showError(errorMessage)
}
}
private fun showError(msg : String?) {
mTvEmailError.text = msg
mTvEmailError.visibility = View.VISIBLE
mTvEmailError.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED) //want focus now!
}
我也尝试过mTvEmailError.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED)
,还尝试将每个具有accessibilityEvent的对象与mTvEmailError.requestFocus()
配对。没运气。
我想在对讲模式下将mTvEmailError
设为选定的视图。而是在按下按钮后什么也没有选择。就像单击确认按钮后,对讲模式完全消失了一样。
mTvEmailError.postDelayed({ mTvEmailError.requestFocus() }, 300)