我正在为Android TV实现一个屏幕,它有一个屏幕标题和一个按钮在左侧。以及自定义视图/行(可选/可单击)的列表,垂直排列在页面右侧。
当用户看到屏幕时,我们希望左边的按钮成为焦点。为此,我在片段的< code>onResume()中调用了< code > button . request focus()。
这打破了可访问性。启用对讲后,首先宣布的是按钮的标签。我想要的是先宣布标题,然后宣布按钮的标签。
我试图宣布一个自定义文本(可以是标题)
rootView.announceForAccessibility(accessibilityText)
其中 rootView
是 xml 布局和辅助功能的根文本
,需要宣布的文本。
但这并没有帮助,按钮的标签获得了优先权。
我该如何解决这个问题?
我从阿图尔·穆尼姆的这篇文章中得到了启示。在明确请求焦点之前,我添加了一个检查是否启用了对讲。
protected fun isTalkBackEnabled(): Boolean {
val a11yServices = context?.getSystemService(ACCESSIBILITY_SERVICE) as? AccessibilityManager
return a11yServices?.isTouchExplorationEnabled?:false
}
和
if(isTalkBackEnabled().not()) {
button.requestFocus()
}
这个解决方案几乎使我摆脱了我所面临的问题。这也是我唯一的前进方向,因为我的应用程序的最低API级别是21,这消除了使用android:screenReaderFocusable的选项。
我请您考虑WCAG指南3.2.1:
此成功标准的目的是确保在访问者浏览文档时,功能是可预测的。任何能够在接收焦点时触发事件的组件都不能更改上下文。组件接收焦点时更改上下文的示例包括但不限于:
还有一句来自Android可访问性团队的话:
因此,人们喜欢做的类似事情是自己管理可访问性焦点。再说一遍,这是一个坏主意。辅助功能重点必须由辅助功能服务确定,就像公告一样,这会产生体验不一致。实际上,可访问性用户面临的最大问题之一,即跨应用程序和随时间推移的不一致。
话虽如此,您可能需要考虑使用以下属性来确保组件的焦点顺序/优先级:
android:nextFocusUp
android:nextFocusDown
android:nextFocusLeft
android:nextFocusRight
并确保任何可能突出显示的组组件都具有import antForAccess
属性集。
我想尝试提供更多帮助,但如果没有示例XML文件,很难了解您的特定用例。您是否尝试使用辅助功能用户测试视图布局?
我正在开发一个可访问的android应用程序,人们可以通过触摸和对讲访问服务来使用我的应用程序。 这是我的AndroidXML代码: strings.xml TextView显示标题“Forename”,EditText允许我在表单字段中输入一些详细信息。我遇到的问题是,当我使用“通过触摸探索”在屏幕上拖动手指时,TalkBack会选择TextView的标题并将其大声宣布为“Forename”。我
在很多应用(日历、驱动器、播放商店)中,当你点击一个按钮并进入一个新活动时,标题栏中的图标会变成一个后退按钮,但对于我正在制作的应用来说,它并没有做到这一点。我如何使图标带您回到上一个屏幕?
本文向大家介绍winforms 在窗体的标题栏上显示帮助按钮,包括了winforms 在窗体的标题栏上显示帮助按钮的使用技巧和注意事项,需要的朋友参考一下
问题内容: 如何使文件选择器的按钮文本国际化?例如,此代码向用户呈现的内容: 问题答案: 它通常由浏览器提供并且很难更改,因此解决该问题的唯一方法是CSS / JavaScript hack,
我有一个按钮,当点击它打开一个对话框与信息从我的SQLite数据库。我已经想出了如何改变背景颜色和文本的颜色,但我有麻烦得到标题文本颜色集。我也想知道是否有可能把一个按钮放在对话框标题的一个角落里?我想把关闭按钮放在那里。 下面是设置对话框的onClickHelp按钮的代码