我正在使用 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);
}
}
}
};
然后,您保存的相同字符串将其添加到相对的 ContentDescription 中,您仅在第一个位置拥有所有 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/