【问题标题】:Customize Android Talkback in Toast在 Toast 中自定义 Android 对讲
【发布时间】:2015-11-26 06:32:27
【问题描述】:

我已经通过 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”等。

【问题讨论】:

    标签: android android-toast talkback accessibilityservice


    【解决方案1】:

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

    如果您只是想通过 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 引用的超级 hacky 方式。这很危险,因为它可能会破坏不同的 Android 实现。

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

    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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多