我正在使用 Appcelerator for Android 应用程序,
设置accessibilityHint属性后,Talkback完成说出该字符串,暂停并始终显示“双击以激活,双击并按住以长按”。我如何禁用此功能?尝试使用accessibilityLabel或accessibilityValue但没有运气。
在 .xml 文件中
<Label id='lblAppName' />
在.tss文件中
"#lblAppName":{
accessibilityHint: 'Double tap here to activate me',
text: L('app_name'),
top:Alloy.Globals.sizes10,
left:Alloy.Globals.sizes58,
right:Alloy.Globals.sizes57
}
TalkBack 宣布这一点是因为它正在检测您的控件是否可以与之交互。例如:一个按钮。鉴于您的标记,特别是您的“accessibilityHint”(我认为它是 Appcelerator 属性),看起来您的控件确实是某种按钮。您为什么要禁用这个有用的公告?
我的答案是删除你的提示,让 Android 操作系统按照它想要的方式处理这个按钮。您的提示并不比 TalkBack 的“提示”更有帮助,最好尽可能让辅助技术共享角色和指导信息。
让 TalkBack 不宣布这一情况的唯一方法是使您的控件成为非交互式。如果 TalkBack 检测到某个控件可以与之交互(单击),它将宣布这些说明,您对此无能为力,也不应该做任何事情。
在爪哇中:
ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {
@SuppressLint("NewApi")
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.setClickable(true);
info.setLongClickable(false);
host.setLongClickable(false);
info.setContentDescription("Talkback will speak it");
}
});
在 Kotlin 中:
ViewCompat.setAccessibilityDelegate(<YOUR_TEXTVIEW>, object : AccessibilityDelegateCompat() {
override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.removeAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK)
info.isClickable = true
info.isLongClickable = false
info.contentDescription = "Talkback will speak it"
host.isLongClickable = false
}
})
要禁用“双击并长按”消息,请使用此属性:
accessibilityDisableLongPress: true
目前我还没有找到“双击激活”消息的解决方案。 :-(
这可能有帮助
ViewCompat.setAccessibilityDelegate(set_actions_button, object : AccessibilityDelegateCompat() {
override fun onInitializeAccessibilityNodeInfo(v: View, info: AccessibilityNodeInfoCompat) {
super.onInitializeAccessibilityNodeInfo(v, info)
info.addAction(AccessibilityActionCompat(
AccessibilityNodeInfoCompat.ACTION_CLICK, "Edit note"))
info.addAction(AccessibilityActionCompat(
AccessibilityNodeInfoCompat.ACTION_LONG_CLICK, "Copy note"))
}
})
我的一些设备添加了“双击并按住长按”等功能。我只想阅读整个段落并仅添加“双击激活”。所以我这样写;
ViewCompat.setAccessibilityDelegate(<YOUR_TEXTVIEW>, object : AccessibilityDelegateCompat() {
override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.removeAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK)
info.isClickable = false
info.isLongClickable = false
info.text = "${<YOUR_TEXTVIEW>.text}\n" + "Double tap to activate."
host.isLongClickable = false
}
})