如何在使用Talkback辅助功能的Android设备中禁用“双击”视图消息?

4

当一个视图有点击事件并启用TalkBack功能时,我需要在该视图中禁用“双击手机”的音频提示。

我正在使用Android开发中的无障碍功能。

请问我应该如何做到这一点?


1
你是指TalkBack为可点击元素呼叫的“双击以激活”吗?可能没有好的方法可以禁用它 - 你为什么想要这样做呢?它存在的目的是让用户知道该控件是交互式的,而不是静态的非可点击文本。 - BrendanMcK
2
你好,有可能禁用Android视图上的可访问性,例如:android:importantForAccessibility = "no" - fah127
@fah127 很好。谢谢。 - KoreanXcodeWorker
4个回答

15
如果您检查位于这里这里的Google TalkBack源代码,字符串资源(“double tap”)已在这里这里被使用。因此,您应该删除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
        }
    })

我测试了这个,它应该可以正常工作。


谢谢你!我花了过去3天时间尝试解决一个类似的问题。 - Adi

0

使用

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以获取更多详细信息。


0

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
            }
        })

-2

要禁用,您需要使用setClickable(false)。 !!!如果在视图上使用setOnClickListener(),则会再次出现“双击”音频


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接