如何滚动可滚动的AccessibilityNodeInfo节点

时间:2013-10-20 23:15:35

标签: android scroll accessibility

使用Android 4.2.2

我正在尝试编写AccessibilityService,并具有大多数必需的功能。我正在使用叠加层并允许用户通过蓝牙开关选择/ cligk突出显示的项目(目的是禁用客户端只想使用一个开关与Android设备进行交互)。

在解析屏幕时,我可以获取root accessibiltyNodeInfo对象及其所有子对象。我可以在屏幕上突出显示所有这些元素,然后通过.performAction()方法单击所需的元素。

在主屏幕上,有3个“窗格”可用,中间显示。向左或向右滑动以查看其他(标准启动器行为)。有一个节点报告isScrollable = true,但Action Flags不报告ACTION_SCROLL_FORWARD或ACTION_SCROLL_BACKWARDS。如果我不能在其上调用.performAction(),因为它不支持滚动,如何滚动这样的节点?为什么报告isScrollable = true,如果它不能以某种方式滚动?

感谢任何帮助 - 谢谢。

1 个答案:

答案 0 :(得分:1)

您无法滚动无法执行ACTION_SCROLL_FORWARD或ACTION_SCROLL_BACKWARDS的节点。

Android上的辅助功能框架充其量是实验性的,并且存在诸如您提到的不一致之类的不一致之处。通常,最好不要依赖任何is[Property]()方法。相反,在节点上调用getActions()getActionsList()之后,您应该自己测试您感兴趣的属性。