中断当前的TalkBack读数并重新开始?

时间:2016-10-21 11:08:10

标签: android accessibility talkback

我有一个可重新排序的RecyclerView,每当您将一个项目移到另一个项目的下方或上方时,TalkBack就会读出:

  

"在项目2"上方移动 ItemTitle

问题在于它将所有这些读数排队并全部执行。因此,如果您将项目从第12位移动到位置1非常快,它会说:

  

"在项目12上方移动 ItemTitle 。   在项目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;
}

1 个答案:

答案 0 :(得分:2)

这样做:

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

在你宣布之前:

view.announceForAccessibility(announcementMessage);