当前位置: 首页 > 知识库问答 >
问题:

辅助功能对话框/对话框碎片读取文本而不是内容描述

缪宪
2023-03-14

我有一个对话框,它的文本视图很少。对于每个文本视图,我设置了不同的内容描述和文本。例如。

<TextView
    android:id="@+id/tv_3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:contentDescription="TV 3"
    android:text="Text Number 3" />

当我向用户显示对话框时,Talkback会读取文本(即文本编号3)而不是内容描述(即电视3)。

但是,如果我将鼠标悬停在任何文本视图上,Talkback将读取内容描述。

当对话框显示时,如何让它读取内容描述?

PS:我尝试过在布局以及通过代码设置内容描述,但没有运气

提前感谢。

共有2个答案

慕容念
2023-03-14

有趣的是,它会选取第一个视觉对象文本,即使该视图具有内容描述。以下是禁用自动读取的第一个文本的方法。

Dialog.getWindow().getDecordView().setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO)
郑向阳
2023-03-14

这是顶级AccessibilityEvents如何聚合其文本的副作用。这可能是需要在TalkBack中修复的问题,但您可以通过扩展TextView或在视图上设置AccessibilityServer来在应用程序中艰难地解决它。

基本上,您希望使onPopulateAccessibilityEvent()用内容描述而不是文本填充事件。

让我们假设您扩展TextView:

public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
    // The super method would normally add the text, but we want to
    // add the content description instead. No need to call super.
    event.getText().add(getContentDescription());
}

请记住,在大多数情况下,您希望文本视图的内容描述和视觉外观相匹配,并且覆盖默认行为可能会导致意外的结果。一般建议不要在文本视图上设置内容描述。

 类似资料:
  • 本文向大家介绍javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框),包括了javascript实现对话框功能警告(alert 消息对话框)确认(confirm 消息对话框)的使用技巧和注意事项,需要的朋友参考一下 我们在访问网站的时候,有时会突然弹出一个小窗口,上面写着一段提示信息文字。如果你不点击“确定”,就不能对网页做任何操作,这个小窗口就是使用a

  • 对话框的内容不是在页面最初可见,而是在用户操作时显示额外的信息。 Toasts Materialize 提供了非常简单的方法,来弹出一些信息,同时也不会让用户感到突兀。这些 Toasts 显示的位置和大小会随着你的设备的不同而改变。 在 JavaScript 中调用 Materialize.toast() 方法来使用。 // Materialize.toast(message, displayLe

  • 对话框是一个现代GUI应用不可或缺的一部分。对话是两个人之间的交流,对话框就是人与电脑之间的对话。对话框用来输入数据,修改数据,修改应用设置等等。 输入文字 QInputDialog提供了一个简单方便的对话框,可以输入字符串,数字或列表。 #!/usr/bin/python3 # -*- coding: utf-8 -*- """ ZetCode PyQt5 tutorial In this

  • 打开或保存文件,弹出警告等对话框 进程: 主进程​ 选择多个文件和目录的对话框: 1 const {dialog} = require('electron') 2 console.log(dialog.showOpenDialog({properties: ['openFile', 'openDirectory', 'multiSelections']})) Copied! 对话框默认是在主线程中

  • 显示用于打开和保存文件、警报等的本机系统对话框。 线程:主线程 显示用于选择多个文件和目录的对话框的示例: const { dialog } = require('electron') console.log(dialog.showOpenDialog({ properties: ['openFile', 'openDirectory', 'multiSelections'] })) 这个对话框是

  • 如果有很多输入超出了菜单可以处理的程度,那么我们可以使用对话框来取得输入信息。程序写作者可以通过在某选项后面加上省略号(…)来表示该菜单项将启动一个对话框。 对话框的一般形式是包含多种子窗口控件的弹出式窗口,这些控件的大小和位置在程序资源描述文件的「对话框模板」中指定。虽然程序写作者能够「手工」定义对话框模板,但是现在通常是在Visual C++ Developer Studio 中以交谈式操作的