1

我正在编写一个专门为盲人和视力受损者设计的应用程序,并且我试图覆盖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 或向上/向下左右滑动时正确触发。

任何帮助将不胜感激

4

1 回答 1

0

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

好吧,我可能读得太快了,奇怪的是有些人被解雇了,有些人没有。

于 2012-12-06T23:46:09.483 回答