【问题标题】:Android accessibility identify headingAndroid 可访问性识别标题
【发布时间】:2017-03-05 19:36:13
【问题描述】:

我有最新版本的 Talkback 及其宣布“我的顶级文本标题”。 Android 本机行为正在为我的顶级元素添加“标题”。我找不到打开/关闭航向通知的方法。是否有 API 来控制其行为。在之前的 Talkback 版本中,它本身并没有宣布“标题”。

【问题讨论】:

  • 你使用什么样的控件让它读取这个?我有相反的问题,我想让它读取标题并且不得不手动将其放入内容描述中。
  • @Mr_E 你能解决你的问题吗?

标签: android accessibility heading android-accessibility


【解决方案1】:

您可以在 API 19+ 上启用或禁用任何 View 的“标题”可访问性属性:

ViewCompat.setAccessibilityDelegate(headingView, new AccessibilityDelegateCompat() {
  @Override
  public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
    super.onInitializeAccessibilityNodeInfo(host, info);
    info.setHeading(true); // false to mark a view as not a heading
  }
});

如果你有 minSdk 28,你可以直接在你的 XML 中设置它:

android:accessibilityHeading="false"

【讨论】:

【解决方案2】:

在 API 19+ 上添加一个简单的方法:

ViewCompat.setAccessibilityHeading(headingView, false);

https://developer.android.com/reference/androidx/core/view/ViewCompat#setAccessibilityHeading(android.view.View,%20boolean)

【讨论】:

  • 19 岁及以下。
  • @KornilovRuslan 文档说这是对 API 的无操作
【解决方案3】:

如果您只支持 API 级别 23 及以上,您可以简单地执行以下操作。

textView.setAccessibilityDelegate(new View.AccessibilityDelegate() {
  @Override
  public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
    super.onInitializeAccessibilityNodeInfo(host, info);
    //blanked to prevent talkback from announcing class/type
    info.setClassName("");
  }
});

【讨论】:

    【解决方案4】:

    我通过在

    中将标题传递为 false 来解决这个问题
    AccessibilityNodeInfoCompat.CollectionItemInfoCompat.obtain method.
    
            // set the heading attribute to false so that heading is not announced in label  
    
    info.setCollectionItemInfo(
        AccessibilityNodeInfoCompat.CollectionItemInfoCompat.obtain(glp.getSpanIndex(),
     glp.getSpanSize(), spanGroupIndex, 1, false, false));
    
    public static CollectionItemInfoCompat obtain(int rowIndex, 
    int rowSpan, int columnIndex, int columnSpan,
    boolean heading, boolean selected)
    

    【讨论】:

    • 你是怎么得到glp的,或者什么是glp?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2010-09-06
    • 2018-07-26
    • 2013-04-23
    • 2019-07-31
    相关资源
    最近更新 更多