某些AccessibilityEvent未在JellyBean 4.2中触发

时间:2012-11-26 04:31:29

标签: android accessibility

我正在编写专为盲人和视障人士设计的应用,我试图在特定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或左/右向上/向下滑动时,其他三个正确启动。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

如果我理解正确,this link接受的答案可能会解决您的问题。 请注意,如果将目标sdk设置为17,则可以执行一些额外的类似步骤,如链接注释中所述。

好吧,我可能读得太快了,有些人被解雇而其他人没有被解雇,这很奇怪。