2016-10-21 8 views
1

Ich habe einen Reorderable RecyclerView und jedes Mal, wenn Sie ein Element bewegen unter oder über ein anderes Element, wird Talkback ausgelesene:Aktuelle TalkBack-Anzeige unterbrechen und neue beginnen?

„ 2 vorstehendem Punkt ItemTitle Verschoben“.

Das Problem ist, dass es alle diese Anzeigen in eine Warteschlange stellt und sie alle ausführt. Also, wenn Sie ein Element aus der Position 12 bewegen 1 wirklich schnell zu positionieren, wird es sagen:

Verschoben ItemTitle oben unter Punkt 12. ItemTitle Verschoben oben unter Punkt 11. Verschoben ItemTitle oben unter Punkt 10 Verschoben. ItemTitle oben unter Punkt 9 ...“

Wie sage ich es die aktuelle Anzeige zu stoppen, um die Warteschlange zu löschen und lesen gerade die neueste Ankündigung?

Dies ist die Methode, die jedes Mal ausgelöst wird, wenn ein RecyclerView Objekt über oder unter ein anderes Objekt gezogen wird.

@Override 
public boolean onItemMove(int fromPosition, int toPosition) { 

    String direction = fromPosition < toPosition ? "below" : "above"; 
    String title1 = viewModel.get(fromPosition).getItemTitle(); 
    String title2 = viewModel.get(toPosition)).getItemTitle(); 

    // these announcements are queued 
    view.announceForAccessibility(view.getContext().getString(R.string.on_move_draggable_item_announce, title1, direction, title2)); 

    return true; 
} 

Antwort

1

Bevor Sie verkünden, dies tun:

((AccessibilityManager) view.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE)).interrupt(); 

view.announceForAccessibility(announcementMessage); 
Verwandte Themen