gpt4 book ai didi

Android如何在显示RelativeLayout时让talkBack阅读文本

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:59 24 4
gpt4 key购买 nike

我有一个 Activity 使用以下代码将自定义 View 添加到整个 Activity 的 View

activity.getWindow().getDecorView()).addView(newView)

为了显示指导标记/用户提示的屏幕。

我的自定义 View 从 RelativeLayout 扩展而来,并在其构造函数中在屏幕底部添加了一个按钮,单击该按钮时会关闭 View 。

我已经覆盖了“dispatchDraw”方法,这样我就可以在特定位置将多个 coachmark UI 对象( TextView 和位图)添加到布局中。这些 coachmark 对象使用如下代码在 View 上绘制自己

        canvas.save();
canvas.translate(positioning[0], positioning[1]);
textView.draw(canvas);
canvas.restore();

canvas.save();
canvas.drawBitmap(bitmap, positioning[2], positioning[3], new Paint());
canvas.restore();

问题:启用 TalkBack 时

  • 当显示此教练标记 View 时,不会大声朗读任何内容这个观点
  • 如果用户按下 TextView 和位图所在的位置,则什么也没有大声朗读

然而,当用户按下按钮时,按钮的内容描述会被大声读出。

我假设未读出 textView 和 Bitmap 的原因是我上面的代码在 Canvas 上呈现它们的方式。

问题 1: 有没有办法让 TalkBack 在点击 TextView 和位图时大声说出某些内容?- 我已尝试为 TextView 和位图设置 contentDescriptions 和 focusable,但这没有任何区别。

问题 2:另一种方法是让 TalkBack 在显示自定义 View 时读出一些内容,并且此文本可以总结屏幕中显示的所有指示标记。我不知道该怎么做,有人有什么建议吗?- 我已经尝试将我的 customView 设置为可聚焦 (setFocasable(true) 并为其提供 contentDescription 但这不起作用。- 我曾尝试在绘制自定义 View 时发起一个操作,然后向事件添加内容描述,但这也不起作用,即

protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
}

@Override
public void onInitializeAccessibilityNodeInfo (AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
// this is not read out load when the view is displayed, but is read when the view is pressed
info.setContentDescription("on Initialize Accessibility Node Info User Tips");
}

最佳答案

我最近一直在努力解决类似的问题。

简短的回答是在您希望触发 TalkBack 时使用 View.announceForAccessibility(text),假设您使用的是 Android API 16 或更高版本 - 请参阅 Android docs .

但是,如果您想支持较早的 Android API,可以使用 View.requestFocus() 来解决更复杂的问题,我已在此处概述:Android: How to force Explore-By-Touch/Talkback to repeat the ContentDescription of the current View in AccessibilityFocus?

我还建议您查看我针对 Google 的 Eyes-Free 代码提出的几个错误,这可能会为您节省一些无用功:

关于Android如何在显示RelativeLayout时让talkBack阅读文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25267109/

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