- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 SwitchCompat
作为带有文本的开关(HQ/LQ 用于不同质量的流)。对于视力好的用户,我认为这意味着什么是显而易见的。但是我很难找到一个好的解决方案来使其易于访问。
我一般为 SwitchCompat
设置了 ContentDescription
<android.support.v7.widget.SwitchCompat
android:id="@+id/qualitySwitch"
style="@style/SwitchStyleCompat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOff="LQ"
android:textOn="HQ"
android:contentDescription="stream quality"
并希望在每次切换 SwitchCompat
时设置一个 contentDescription。
if (isChecked) {
streamPlayerService.desireHighQuality();
mQualitySwitch.setContentDescription("quality high");
} else {
streamPlayerService.desireLowQuality();
mQualitySwitch.setContentDescription("quality low");
}
但即使有 contentDescription,textOn/textOff 标志仍会被 Talkback
读取,从而导致类似“Quality high HQ switch”的结果。有什么方法可以禁止读取 textOn/textOff 属性,以便只向用户读取 contentDescription?
最佳答案
您可以获得所需的确切行为。但唯一的方法是自定义控件,或者一些涉及开关背后不可见 View 的黑客行为。如果 TalkBack 遇到一个开关,它会按照你说的方式读出来。共享状态和值(value)信息。在您开始组装自定义控件之前,让我向您展示我认为更易于访问的解决方案。也鼓励您查看我的开源应用程序,它涉及很多无障碍概念,实际上包含我在这里与您分享的方法示例。
https://github.com/dequelabs/Deque-University-for-Android
请记住,对于可访问性,任何文本或状态都必须以等效方式共享。您无法将用户听到的内容与他们看到的内容分开。我们不仅关心盲人,还关心那些可能只是视力有困难的人。如果公告与他们的预期完全不同,可能会非常困惑。此外,如果该公告令人困惑,也许您应该重新考虑它是否对有视力的用户同样令人困惑...
因此,如果您有一个开/关开关,则在公告期间的某个时间点打开或关闭它是合适的。这是用户将习惯的,并且对于使用您的控件的阅读障碍用户来说,如果您要覆盖此行为,他们会非常困惑。如果您的控件文本让有视力的用户感到困惑,并且您重复了这个确切的文本,那么对于没有视力的用户来说同样会造成混淆。这实际上比为 TalkBack 用户创建单独的用户体验更“易于访问”。因为这只是意味着您遇到了用户体验问题,需要更改标签的措辞。
实现此目的的最佳方法是使用 LabelFor 属性。
<TextView
android:labelFor="@+id/your_id"
android:text="My Text" />
<ToggleButton android:id="@+id/your_id"/>
这将导致它像这样读取:
HQ, switch, for Quality High
如果您专注于开关,这正是您需要的信息。开关上的文字是“HQ”,这是一个开关,它与视觉标签“质量高”相关联。状态、角色、名称……接二连三。这是一件美丽的事情!
如果您认为这仍然令人困惑,您还可以向 TextView 添加内容描述,以便 TalkBack 用户获得一些额外的上下文,尽管它应该与实际文本非常相似。 (例如:包含实际文本,附加信息,或者可能做一些首字母缩略词扩展)。
<TextView
android:labelFor="@+id/my_id"
android:text="Quality High"
android:contentDescription="... Quality High ..." />
<ToggleButton android:id="@+id/my_id"/>
这将导致内容描述被读出,因此它会像这样读出:
HQ, switch for ... Quality High ...
或者像这样:
<TextView
android:labelFor="@+id/my_id"
android:text="A misleading acronym CA"
android:contentDescription="A misleading acronym Certificate Authority" />
<ToggleButton android:id="@+id/my_id"/>
关于Android 切换 textOn/Off 防止从 Talkback 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35655156/
我有一个 Switch,可以在男性和女性之间进行选择。 所以我将 textOff 和 textOn 分别设置为“男性”和“女性”,但根据开关位置,只显示男性或女性之一。 如何让它同时显示男性和女性?
我有一个 SwitchCompat 作为带有文本的开关(HQ/LQ 用于不同质量的流)。对于视力好的用户,我认为这意味着什么是显而易见的。但是我很难找到一个好的解决方案来使其易于访问。 我一般为 Sw
我有一个 UI,我在其中添加了一个 Switch 小部件(在 API 14 中引入)。XML 看起来像这样: 您可以看到我指定了textOn 和textOff。所以我希望开关小部件上有这段文字。 然
更改 Switch 的 android:textOn 和 android:textOff 属性在我的 S3 上不起作用。我开关上的标签总是显示“ON” 和“OFF”。 Switch Documenta
我正在尝试制作一个带有开/关开关的 ListView 。我找到了这个简单的代码,但问题是它对我不起作用。 是的,它显示了一个开关,但没有显示文本(振动开/关)。只显示一个可以切换的圆圈。我想发布屏幕
我有一个 SwitchCompat,其中包含我通过 SwitchCompat.setText() 设置的文本。 在我的例子中,这个文本只是“开”或“关”。 问题是 Android TalkBack 将
A ToggleButton切换选中状态时,小部件会更改大小。例如,如果 textOn 值为“true”并且 textOff 值为“不确定稍后再给我打电话”,选中的状态切换会导致按钮宽度发生显着变化。
当使用 node app.js 启动 Express 服务器时,我看到显示以下消息: Implicit textOnly for script and style is deprecated. Use
Lollipop (5.0) 中开关小部件的行为发生了变化。 targetSdkVersion=19 时渲染的开关: targetSdkVersion=21 时渲染的开关: 请注意,Andr
我正在尝试更改 Android 中切换按钮上的默认打开和关闭文本。我知道如何在 xml 中执行此操作。我的问题是如何在代码中以编程方式实现这一点。 谁能给点建议?非常感谢。 最佳答案 使用 Toggl
我是一名优秀的程序员,十分优秀!