Android 可访问性 - 有没有办法检测回话是否正在阅读内容描述

标签 android mobile accessibility

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

最佳答案

ListView 依赖于 Adapter.hasStableIds() 的值确定是否可以在数据集更改之间重用膨胀 View 。

如果此方法返回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.
        ...
    }
}

关于Android 可访问性 - 有没有办法检测回话是否正在阅读内容描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42113448/

相关文章:

android - 在 gc.properties ( react-native ) 中运行 'react-native run-android' 时无法更新时间戳错误

java - 通过 TCP 套接字将音频写入服务器

jquery - Bootstrap 按钮在移动设备上获取 "stuck"

java - TextView不显示文本

javascript - 谷歌地图的棕色/不可点击部分

java - 获取子字符串图像名称

jQuery 按钮点击不起作用

c++ - 将发音归于不同的源代码概念是否可行?

ios - UITextView 可点击标签辅助功能画外音问题

ios - 聚焦非 UILabel titleView 时,VoiceOver 会读取辅助功能标签两次