私は、視覚障害者や視覚障害者向けに特別に設計されたアプリをコーディングしています。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 つが正しく起動します。
どんな助けでも大歓迎です