我正在编写专为盲人和视障人士设计的应用,我试图在特定TextView
被触发时覆盖AccessibilityEvent
的行为。屏幕布局包括4 TextView
垂直排列,填满屏幕。我只是想改变背景的颜色以反映哪一个是“聚焦”的,所以在我的自定义TextView
我有这个方法
@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
System.out.println(event.toString());
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_HOVER_ENTER ||
event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED) {
this.setBackgroundColor(mColorArray[2]);
}
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_HOVER_EXIT ||
event.getEventType() == AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED) {
this.setBackgroundColor(mColorArray[0]);
}
return super.dispatchPopulateAccessibilityEvent(event);
}
我的问题是AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED
永远不会被解雇。使用ExploreByTouch或左/右向上/向下滑动时,其他三个正确启动。
非常感谢任何帮助
答案 0 :(得分:0)
如果我理解正确,this link接受的答案可能会解决您的问题。 请注意,如果将目标sdk设置为17,则可以执行一些额外的类似步骤,如链接注释中所述。
好吧,我可能读得太快了,有些人被解雇而其他人没有被解雇,这很奇怪。