首页 文章

如何在Android上修改可点击的View的TalkBack使用提示?

提问于
浏览
5

默认情况下,Android上的可点击视图将使用在内容描述后朗读(如果已启用TalkBack且用户关注该视图)的使用提示进行呈现:

“双击激活”

我可以更改这个,以便它读出一些不那么抽象,更具体的应用程序吗?喜欢:

“双击播放视频”

1 回答

  • 3

    是的,这绝对是可能的!

    重写onInitializeAccessibilityNodeInfo方法

    如果您有自定义视图,则可以覆盖 onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) 方法并添加带有 ACTION_CLICK ID的操作,以覆盖标签:

    @Override
    public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
        super.onInitializeAccessibilityNodeInfo(info);
        info.addAction(
                new AccessibilityNodeInfo.AccessibilityAction(
                        AccessibilityNodeInfo.ACTION_CLICK,
                        "play video"
                )
        );
    }
    

    如果该View具有单击侦听器,则通过添加此新 Action ,您将覆盖默认标签,因此TalkBack将改为"Double tap to " .

    这仅适用于API 21 - 如果您想要在较低API版本上工作或想要在非自定义视图上设置自定义使用提示,该怎么办?你可以使用 ViewCompatAccessibilityDelegateCompat

    改为使用AccessibilityDelegate

    它非常相似 - 您可以覆盖扩展的自定义AccessibilityDelegate中的等效方法:

    public static class PlayVideoAccessibilityDelegate extends AccessibilityDelegateCompat {
    
        @Override
        public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
            super.onInitializeAccessibilityNodeInfo(host, info);
            info.addAction(
                    new AccessibilityNodeInfoCompat.AccessibilityActionCompat(
                            AccessibilityNodeInfoCompat.ACTION_CLICK,
                            "play video"
                    )
            );
        }
    }
    

    然后使用它,你用 ViewCompat 设置委托:

    ViewCompat.setAccessibilityDelegate(playButton, new PlayVideoAccessibilityDelegate());
    

    使用accessibilitools

    Novoda有一个实用程序库,可以帮助Android上的辅助功能 . 这包括一些帮助设置使用提示的工具:

    UsageHintsAccessibilityDelegate delegate = new UsageHintsAccessibilityDelegate(resources);  
    delegate.setClickLabel("play video");
    
    ViewCompat.setAccesibilityDelegate(playButton, delegate);
    

    我写了一个blogpost which is an overview of accessibilitools(我也是图书馆的撰稿人) .

相关问题