Android辅助功能 - 有没有办法检测回话是否正在阅读内容描述

时间:2017-02-08 12:42:12

标签: android mobile accessibility

我有一个ListView,它将填充来自服务器的数据(电话号码),我每2秒轮询一次。当TalkBack功能打开并且我点击列表项时,talkBack没有机会读取整个字符串,因为刷新发生并且talkBack从乞讨开始。有没有办法检测TalkBack是否正在读取内容描述?谢谢。

1 个答案:

答案 0 :(得分:2)

ListView依赖于Adapter.hasStableIds()的值来确定是否可以跨数据集更改重复使用膨胀的视图。

如果此方法返回false,则ListView假定更改前后的数据集之间没有一致性。因此,它不知道应该在哪里放置辅助功能。

但是,如果此方法返回true并且您的适配器在项ID和数据之间保持一致的映射,则ListView能够将可访问性焦点保持在正确的项目上 - 即使它更改了数据集中的位置

要解决此问题,您可以修改适配器以维护稳定的ID:

class MyAdapter extends ListAdapter {
    ...

    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public long getItemId(int position) {
        // Return a consistent mapping between the item at a given
        // position and an arbitrary (but consistent!) ID associated
        // with that item.
        ...
    }
}