当一个视图有点击事件并启用TalkBack功能时,我需要在该视图中禁用“双击手机”的音频提示。
我正在使用Android开发中的无障碍功能。
请问我应该如何做到这一点?
当一个视图有点击事件并启用TalkBack功能时,我需要在该视图中禁用“双击手机”的音频提示。
我正在使用Android开发中的无障碍功能。
请问我应该如何做到这一点?
AccessibilityActionCompat.ACTION_CLICK
操作并将isClickable
设置为false
在节点信息中。ViewCompat.setAccessibilityDelegate(view, object : AccessibilityDelegateCompat() {
override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
super.onInitializeAccessibilityNodeInfo(host, info)
info.removeAction(AccessibilityNodeInfoCompat.AccessibilityActionCompat.ACTION_CLICK)
info.isClickable = false
}
})
我测试了这个,它应该可以正常工作。
使用
ViewCompat.setAccessibilityDelegate(view, new AccessibilityDelegateCompat() {
@Override
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.addAction(AccessibilityNodeInfoCompat.ACTION_FOCUS);
}
});
请查看https://dev59.com/CVkS5IYBdhLWcg3wzJP3#47875696以获取更多详细信息。
Kiran的回答非常有帮助,但是我的一些设备仍然会添加“双击并长按以长按”等内容。我只想阅读整个段落并仅添加“双击以激活”。因此,我写成了这样;
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
}
})
要禁用,您需要使用setClickable(false)
。
!!!如果在视图上使用setOnClickListener()
,则会再次出现“双击”音频
android:importantForAccessibility = "no"
- fah127