ViewPager启动时Talkback不公布页面信息

问题描述 投票:0回答:1

我有一个简单的 ViewPager。一个非常基本的。当我们启用可访问性时,当用户登陆 ViewPager 时,对讲会宣布 ViewPager 内的 Fragment 内容,并以“inside Pager”短语结尾。我们滑到第 2 页,它以“第 2 页,共 3 页”短语结尾。当我们返回到第 1 页时,它现在会显示“第 1 页,共 3 页”。即使用户第一次登陆 ViewPager,我也想宣布对讲“第 1 页,共 3 页”。我看到这是默认的 android 行为,但为什么会这样呢?有什么办法可以达到这个目的吗?

android android-viewpager accessibility talkback
1个回答
0
投票

这种事情对于开发者来说是非常令人沮丧的,但对于屏幕阅读器用户来说却不是。

我看到这是默认的 Android 行为,但为什么会这样?

关键的想法是不要太冗长。屏幕阅读器用户知道,当第一次宣布

ViewPager
时,他们位于第一页。因为他们可能正在搜索其他内容,所以谷歌似乎决定等待用户探索后再提供更多信息。

可以在 TalkBack 中找到 源代码

private @Nullable CharSequence getDescriptionForPageEvent(
    AccessibilityEvent event, AccessibilityNodeInfo source) {
    final int fromIndex = (event.getFromIndex() + 1);
    final int itemCount = event.getItemCount();
    if ((fromIndex <= 0) || (itemCount <= 0)) {
        return null;
    }
    ...

fromIndex
变量指示用户来自哪里,如果它为 0,或“以前从未去过其他地方”,则它只返回 null。

这可能与其他屏幕阅读器不同,例如评论屏幕阅读器,并且在三星的版本中可能会发生变化(是的,它是不同的),并且在VoiceView(亚马逊的设备)中可能完全不同屏幕阅读器)。所以不要尝试破解它!

请注意,我与 Google 或 TalkBack 没有任何官方关系,我只是决定去了解一下 TalkBack 源代码以制作一个开发人员友好的版本

© www.soinside.com 2019 - 2024. All rights reserved.