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

Android辅助功能viewPager读取两个视图,android,android-viewpager,talkback,Android,Android Viewpager,Talkback,我使用Talkback读取我的ViewPager上的视图内容,它读取当前视图的内容和下一个视图的内容(不可见) 比如说 视图1 文本视图->hi1 文本视图->字节1 视图2 文本视图->hi2 TextView->bye2 对讲读取hi1、hi2、bye1、bye2 我试图更改pager.setOffscreenPageLimit()的值,但它没有任何作用,Talkback始终读取当前视图和下一个视图,即使OffScreenPageLimit的值为4(它应该读取下两个视图) 我发现的唯一信息是

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

比如说

视图1

文本视图->hi1 文本视图->字节1

视图2

文本视图->hi2 TextView->bye2

对讲读取hi1、hi2、bye1、bye2

我试图更改pager.setOffscreenPageLimit()的值,但它没有任何作用,Talkback始终读取当前视图和下一个视图,即使OffScreenPageLimit的值为4(它应该读取下两个视图)

我发现的唯一信息是:


有什么想法吗?

您可以在OnChangePageView中创建
事件
自定义可访问性事件,并将要读取的字符串保存在列表中,并从Activity/fragment和adapter之间的接口获取位置

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);
ArrayList ReadAccessibilityValue=new ArrayList();
字符串valor=valor+txtView1.getText()+“,”;
valor=valor+txtView2.getText()+“,”;
如果(位置==0){
相对一般设置内容描述(valor);
}
readAccessibilityValues.add(valor);

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

您找到解决方案了吗?我也有同样的问题。恐怕没有,我为我需要的特殊情况做了变通,sorry@jegumi:您可以分享此问题的解决方案吗?我也有同样的problem@ManishAgrawat恐怕我再也不能使用那个旧代码了。我想我所做的是使用AccessibilityManager()和AccessibilityEvents()在某些情况下禁用/启用对讲。这似乎最终在对讲4.5.0(2016年4月27日发布)中得到了修复。这里的“onPageChangeInterface”是什么。请在ViewPagerWallets上给我解释这是剪切粘贴答案,如果不完整,那么它是无用的。