1

私は、視覚障害者や視覚障害者向けに特別に設計されたアプリをコーディングしています。TextView特定のアプリAccessibilityEventが起動されたときの動作をオーバーライドしようとしています。画面レイアウトはTextView、画面いっぱいに縦に並べられた 4 つのレイアウトで構成されます。背景の色を変更して、どちらが「焦点を合わせている」かを反映したいだけなので、カスタム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 を使用するか、上下左右にスワイプすると、他の 3 つが正しく起動します。

どんな助けでも大歓迎です

4

1 に答える 1

0

私が正しく理解していれば、このリンクから受け入れられた答え があなたの問題を解決するかもしれません。ターゲットSDKを17に設定した場合、リンクのコメントで説明されているように、実行する追加の同様の手順がいくつかあることに注意してください。

さて、私はこれをあまりにも速く読んだかもしれません、あるものが解雇され、他のものが解雇されないのは奇妙です。

于 2012-12-06T23:46:09.483 に答える