10

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

4

4 回答 4

8

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

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"
于 2019-01-07T21:51:15.813 回答
4

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

ViewCompat.setAccessibilityHeading(headingView, false);

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

于 2020-07-16T07:40:04.590 回答
1

我通过将标题传递为 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)
于 2017-09-14T06:19:05.300 回答
1

如果您只支持 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("");
  }
});
于 2017-09-13T21:11:56.873 回答