android - 在 Toast 中自定义 Android 对讲

标签 android android-toast talkback accessibilityservice

我已经通过 Android TalkBack 检查了所有默认的 Toast 消息。 默认的 Android TalkBack 行为是它读取 Toast 中的所有内容(不间断)。有什么办法可以根据我的需要自定义它。例如:

Toast.makeText(getApplicationContext(), "Hello world! Welcome to Android. This is Stackoverflow.", Toast.LENGTH_SHORT).show();

当 Toast 出现时,它会自动显示“Hello world!欢迎使用 Android。这里是 Stackoverflow。”但我想控制它,让它只显示“Hello world”或“Welcome to Android”或“This is Stackoverflow”等。

最佳答案

我想不出这样做的理由 - 通常,无论用户使用信息的方式如何,您都希望在提供给用户的信息之间保持某种对等。

如果您只是在寻找 TalkBack 来大声朗读文本,也许您可​​以直接使用 View.announceForAccessibility API。也就是说……


是的,通过语音反馈无障碍服务大声朗读的内容可能与呈现的内容不同。

Toast toast = Toast.makeText(this, "visible text", Toast.LENGTH_SHORT);
View.AccessibilityDelegate delegate = new View.AccessibilityDelegate() {
    @Override
    public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
        super.onPopulateAccessibilityEvent(host, event);
        event.setContentDescription("audible text");
    }
};
((ViewGroup) toast.getView()).getChildAt(0).setAccessibilityDelegate(delegate);
toast.show();

请注意获取对 TextView 的引用的 super hacky 方法。这很危险,因为它可能会破坏不同的 Android 实现。

您可以直接在 Toast 上设置自己的 View :

Toast toast = new Toast(this);
TextView messageView = new TextView(this);
messageView.setText("visible text");
View.AccessibilityDelegate delegate = new View.AccessibilityDelegate() {
    @Override
    public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
        super.onPopulateAccessibilityEvent(host, event);
        event.setContentDescription("audible text");
    }
};
messageView.setAccessibilityDelegate(delegate);
toast.setView(messageView);
toast.show();

关于android - 在 Toast 中自定义 Android 对讲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32324537/

相关文章:

android - 为什么 Toast.setGravity() 不起作用

java - 为什么时间段结束后 Toast 没有隐藏?

javascript - Android Talkback 未注册 Web 版 onFocus。如何使用 Android Talkback 操作辅助功能焦点?

android - PagerTabStrip TalkBack 辅助功能

android - 如何以编程方式设置和删除 Focus on edit text on click a button

Android Studio Hello World 项目未显示在设计 XML 上

android - 获取父 Activity 的名称-Null Exception

java - 方法 setView 已弃用

android - 如何在 Android Studio 中设置开关或切换按钮的内容描述?

android - 使用 Google 设计库时,如何使工具栏快速显示或隐藏?