gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:08:16 25 4
gpt4 key购买 nike

默认情况下,Android 上的可点击 View 将在内容描述之后呈现一个使用提示,该提示会被大声朗读(如果启用了 TalkBack 并且用户专注于该 View ):

"Double tap to activate"

我能否更改此设置,使其针对我的应用读出不那么抽象、更具体的内容?喜欢:

"Double tap to play video"

最佳答案

是的,这绝对有可能!

覆盖onInitializeAccessibilityNodeInfo方法

如果您有自定义 View ,您可以覆盖 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 版本上工作的东西或想在非自定义 View 上设置自定义使用提示怎么办?您可以使用 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 设置委托(delegate):

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

使用辅助工具

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

UsageHintsAccessibilityDelegate delegate = new UsageHintsAccessibilityDelegate(resources);  
delegate.setClickLabel("play video");

ViewCompat.setAccesibilityDelegate(playButton, delegate);

我写了一个blogpost which is an overview of accessibilitools (我也是图书馆的贡献者)。

关于android - 如何在 Android 上修改可点击 View 的 TalkBack 使用提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41496234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com