Android辅助功能viewPager读取两个 View

标签 android android-viewpager talkback

我正在使用 Talkback 读取 ViewPager 上的 View 内容,它正在读取当前 View 的内容和下一个 View 的内容(不可见)。

例如

查看1

TextView -> hi1 TextView -> 再见1

查看2

TextView -> hi2 TextView -> 再见2

对讲读取 hi1、hi2、bye1、bye2

我尝试更改 pager.setOffscreenPageLimit() 的值,但它没有执行任何操作,Talkback 始终读取当前 View 和下一个 View ,即使 OffScreenPageLimit 的值为 4(它应该读取接下来 2 个 View )。

我发现的唯一信息是:https://code.google.com/p/eyes-free/issues/detail?id=139

有什么想法吗?

最佳答案

您可以在 OnChangePageView 中创建 event 自定义辅助功能事件,并将要读取的字符串保存在列表中,并从 Activity/fragment 和适配器之间的界面获取位置。

ViewPager.OnPageChangeListener pageChangeListener = new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrollStateChanged(int arg0) { }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) { }

        @Override
        public void onPageSelected(int position) {
            if(isTalkbackActive(getApplicationContext())) {
                AccessibilityEvent event = AccessibilityEvent.obtain();
                if (onPageChangeInterface != null) {
                    String text = onPageChangeInterface.getTextToRead(position);
                    event.setEventType(AccessibilityEvent.TYPE_ANNOUNCEMENT);
                    event.getText().add(text);
                    viewPagerWallets.requestFocus();
                    viewPagerWallets.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
                    accessibilityManager.sendAccessibilityEvent(event);

                }
            }
        }

    };

然后,您保存的相同字符串将其添加到相对的 Co​​ntentDescription 中,您仅在第一个位置拥有所有 View 。

ArrayList readAccessibilityValues = new ArrayList<>();
 String valor = valor + txtView1.getText()+",";
    valor = valor + txtView2.getText()+",";
    if(position == 0) {
        relativeGeneral.setContentDescription(valor);
    }
 readAccessibilityValues.add(valor);

我认为这不是最好的解决方案,但我还没有找到另一个

关于Android辅助功能viewPager读取两个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25688542/

相关文章:

android - 为什么在 Android 编程中 UI 不使用 XML 而不是 HTML?

android - 如何在其他类 Android Kotlin 中使用 this 和 context?

android - 分隔符不适用于带有 viewpagerindicator 和 actionbarsherlock 的 TitlePageIndicator

android - 包含 TableLayouts 的 fragment 的 ViewPager 加载缓慢 :

android - 使用 TAG `android:switcher: + R.id.ot_pag_main + :0` 查找 fragment 是否安全?

java - 使用蓝牙键盘和语音助手的TextView按钮

android - 如何确保只有我的应用能够注册和接收从 FCM 发送的消息?

android - 清除android中的蓝牙名称缓存

android - 如何告诉 TalkBack 自定义 View 被用作按钮

javascript - Android 上的 RN 可访问性 - TalkBack 读取 View 的顺序