Android辅助功能viewPager读取两个视图

时间:2014-09-05 14:47:21

标签: android android-viewpager talkback

我正在使用Talkback阅读我的ViewPager上的观看内容,它正在阅读当前视图的内容和下一个视图的内容(不可见)。

例如

查看1

TextView - > HI1 TextView - > bye1

视图2

TextView - > HI2 TextView - > bye2

对讲读取hi1,hi2,bye1,bye2

我试图更改pager.setOffscreenPageLimit()的值,但它没有做任何事情,Talkback总是读取当前视图和下一个,即使OffScreenPageLimit的值是4(它应该读取接下来的2次观看)。

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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);

                }
            }
        }

    };

然后,您保存的相同字符串将其添加到相对的ContentDescription中,您只能在第一个位置拥有所有视图。

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

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