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

前端之家收集整理的这篇文章主要介绍了如何在Android上修改可点击的View的TalkBack使用提示?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

“Double tap to activate”

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

“Double tap to play video”

最佳答案
是的,这绝对是可能的!

覆盖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版本上工作或想要在非自定义视图上设置自定义使用提示,该怎么办?您可以使用ViewCompat和AccessibilityDelegateCompat!

改为使用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(我也是图书馆的撰稿人).

猜你在找的Android相关文章