我正在努力使HubDisclaimerView可以通过TalkBack访问,并且未应用“按钮”或“链接”的角色。
我已经设置了内容描述以宣布文本是什么,但是视图并不继承自Button或ImageView。它确实具有onClickListener
和isClickable=true
。但是,“话语提示”模式或“本地上下文”菜单中没有“双击...”,“按钮”或“链接”辅助功能。
我想知道是否有针对自定义目的的自定义视图链接的修补程序? AccessibilityEvent API似乎不是正确的方向,因为我希望将其添加到充当“条款和条件”链接的列表中的行中。
答案 0 :(得分:0)
您可以在onInitializeAccessibilityNodeInfo()
内添加信息,以告知诸如Talkback的可访问性服务该视图是可单击的。我没有您的代码,但是编写了一个简单的自定义视图来演示这一点:
class MyTextView : TextView {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle)
// ... other override methods
override fun onInitializeAccessibilityNodeInfo(info: AccessibilityNodeInfo?) {
super.onInitializeAccessibilityNodeInfo(info)
// With `null` as the second argument to `AccessibilityAction`, Talkback announces
// "double tap to activate". If a custom string is provided,
// Talkback announces "double tap to <custom string>".
val customClick = AccessibilityAction(AccessibilityNodeInfo.ACTION_CLICK, "foo")
info?.addAction(customClick)
}
}
添加角色没有真正的理由,因为“话语提示”将通过这一小的更改来“双击X”。如果您绝对想设置角色,则可以按照以下步骤进行设置(但同样,我不确定这样做是否能带来任何好处):
override fun getAccessibilityClassName(): CharSequence {
return Button::class.java.name
}
这使“话语提示”在通知中添加“按钮”,但是以这种方式添加角色是很容易的事。无法保证“话语提示”将仅由于您设置了accessibilityClassName
而继续以按钮的形式宣布视图。坚持添加AccessibilityNodeInfo.ACTION_CLICK
。