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

回话。使CardView具有可访问性

秦才英
2023-03-14

我想让我的CardView更容易访问。我有可点击的CardView,我希望通过角色“按钮”对该CardView进行语音反馈。我不知道怎么做。

private fun setAccessibilityDescription(view: View) {
        ViewCompat.setAccessibilityDelegate(view, object : AccessibilityDelegateCompat() {

            override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
                super.onInitializeAccessibilityNodeInfo(host, info)
                info.className = Button::class.java.name
            }
        })
    }

我尝试使用ViewCompat和重写onInitializeAccessibilityNodeInfo,这对我有帮助,但不是完全的。角色“button”总是先发声,尽管对讲通常最后用真实按钮说“button”。总比什么都没有好,但是我怎样才能让对讲听起来像我的CardView按钮

共有2个答案

司徒捷
2023-03-14

我尝试了不同的方法,我认为TalkbackAPI不支持设置自定义对象,比如按钮。对于我选择使用contentDescription的解决方案,我只需在我的对象的contentDescription末尾添加单词“button”

private fun setAccessibilityViewTypeInfo(view: View, contentDescription: String) {
        ViewCompat.setAccessibilityDelegate(view, object : AccessibilityDelegateCompat() {

            override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfoCompat) {
                super.onInitializeAccessibilityNodeInfo(host, info)
                info.contentDescription = host.context.resources.getString(
                    designR.string.talkback_button_pattern,
                    contentDescription
                )
            }
        })
    }

在我的代码内容描述中,它是我的CardView和talkback按钮模式中的所有文本

<string name="talkback_button_pattern">%1$s, button</string>

我知道人们可以在环境中改变对讲行为。根据设置,“按钮”一词可以在语音表演的结尾或开头,我的解决方案不支持这种情况。但总比什么都没有好

阳博赡
2023-03-14

这是可能的!您需要的是角色描述,而不是类名。通过调用setRoleDescription,可以将此设置为按钮。

例如:

info.roleDescription = getString(R.string.button)
 类似资料:
  • 使用 Dreamweaver 可生成可供有视觉、听觉、运动及其他障碍的人士使用的网站和 Web 产品。 注意:用户界面已经在 Dreamweaver CC 和更高版本中做了简化。因此,您可能在 Dreamweaver CC 和更高版本中找不到本文中描述的一些选项。有关详细信息,请参阅此文章。 关于辅助内容 辅助功能是指使 Web 站点和 Web 产品可供具有视觉、听觉、运动和其他障碍的人士使用。软

  • 问题内容: 我在Sun的“ Core Servlets and JavaServer Pages vol 2”中看到了带有会话计数器的示例。 计数器仅仅是建立在和递增/递减会话数与/ : 侦听器在上下文中注册自身,因此可以访问它并获取计数器值。 没有同步块。 安全,不是吗? 可以缓存在CPU寄存器中,并且对于使用? 问题答案: Servlet 3.0的规范规定(第11.5节): 侦听器实例和线程

  • 考虑以下层次结构: 访客类: 通常,当重载方法依赖于参数类型时,我使用访问者模式来实现双重调度,但我只有指向基类的指针。 例如: 我认为这是实现双重调度的唯一方法,因为虚拟函数的动态绑定应该只发生在调用方法的对象上,而不是其参数(派生类型)上。 现在我遇到了一个新情况,我需要一种在多个参数上重载的Visit方法。类似于这样: 我不能使用经典的访问者模式解决方案,因为接受方法只对其中一个参数调用。

  • 问题内容: 如何获得服务器上所有活动的PHP会话的列表并从一个用户实例中访问它们? 激励的情况是显示站点上所有当前活动用户的列表,用户名存储在每个用户的PHP会话中。 注意:我知道我可以通过数据库(甚至文件系统)创建自己的状态,但是我正在寻找一种利用内置PHP会话机制的方法。 问题答案: 看到响应,尽管有可能,但这并不意味着您 应该 这样做。会话的存储格式没有记录,并且可能随时更改(即使在次要版本

  • 尝试使用API访问Github组织的私有存储库中的文件,我是该组织的成员。到目前为止,尝试了几种不同的方法: 1.如果我使用用户名/密码方法- 它工作正常,但是我试图从一个协作的Rails应用程序访问repos,所以我不想公开我的github登录凭据。我想创建一个具有访问权限的虚拟GH帐户并使用这些凭据是可能的,但这绝对不理想... 2.因此,我查看了API文档中的OAuth2 Secret/Ke

  • 我执行了以下步骤: 1)通过keytool创建自签名证书 2)在server.xml的8443端口上配置连接器 3)检查localhost:8080和localhost:8433都可访问 4)向web.xml添加以下安全约束 当我转到时,不会重定向到。据我所知,对于传输保证为机密的URL使用HTTP的请求应该使用HTTPS自动重定向到相同的URL。 但是,我的应用程序仍然可以访问,并且使用HTTP