【问题标题】:Accessibility Dialog/DialogFragment reads text instead of content description可访问性 Dialog/DialogFragment 读取文本而不是内容描述
【发布时间】:2014-09-29 21:55:00
【问题描述】:

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

<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)而不是内容描述(即 TV 3)。

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

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

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

提前致谢。

【问题讨论】:

    标签: android accessibility talkback accessibilityservice


    【解决方案1】:

    有趣的是,即使该视图有内容描述,它也会选择第一个可视文本。这是一种禁用自动读取的第一个文本的方法。

    Dialog.getWindow().getDecordView().setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO)
    

    【讨论】:

      【解决方案2】:

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

      基本上,您想让 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());
      }
      

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

      【讨论】:

      • 我会试一试。谢谢:)
      猜你喜欢
      • 1970-01-01
      • 2016-02-16
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多