我有一个可重新排列的RecyclerView
,每当你移动一个项目低于或高于另一个项目时,TalkBack会读出:
“在项目2上方移动了ItemTitle”。
问题是它将所有这些读数排队并全部执行。因此,如果您将项目从位置12移动到位置1非常快,它会说:
“在项目上方移动了ItemTitle 12.在项目11上方移动ItemTitle。在项目10上方移动ItemTitle。在项目9上方移动ItemTitle ......”
如何告诉它停止当前读数,清除队列并阅读最新公告?
这是每次将RecyclerView
项目拖动到另一个项目上方或下方时触发的方法。
@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;
}
做这个:
((AccessibilityManager) view.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE)).interrupt();
在你宣布之前:
view.announceForAccessibility(announcementMessage);