Android 可访问性识别标题
Posted
技术标签:
【中文标题】Android 可访问性识别标题【英文标题】:Android accessibility identify heading 【发布时间】:2017-03-05 19:36:13 【问题描述】:我有最新版本的 Talkback 及其宣布“我的***文本标题”。 android 本机行为正在为我的***元素添加“标题”。我找不到打开/关闭航向通知的方法。是否有 API 来控制其行为。在之前的 Talkback 版本中,它本身并没有宣布“标题”。
【问题讨论】:
你使用什么样的控件让它读取这个?我有相反的问题,我想让它读取标题并且不得不手动将其放入内容描述中。 @Mr_E 你能解决你的问题吗? 【参考方案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"
【讨论】:
这个方法在哪个API中添加的?AccessibilityNodeInfoCompat#setHeading(boolean)
嗨@Adam S,这似乎对我不起作用。当您执行 setHeading(true)
时,textview 不会宣布它是一个标题。
是的,添加在28developer.android.com/reference/android/view/accessibility/…【参考方案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?以上是关于Android 可访问性识别标题的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Forms android - 调整控件大小以考虑可访问性设置