我正在使用一个 viewpager,它由一些相当复杂的相对布局兄弟组成。
如果我单击相对布局,它将突出显示整个页面并按预期一个接一个地阅读标题和一些文本视图。
如果我滚动 viewpager,我希望对讲器以与单击时读取第一页相同的方式读取下一页。其次,如果我滚动到第二、第三等页面并单击这些布局,对讲将按预期读取。
我试图在滚动事件完成后实现点击行为。
这是我对accessibilityDelegate 所做的。
viewPager.setAccessibilityDelegate(new AccessibilityDelegate () {
@Override
public boolean onRequestSendAccessibilityEvent(ViewGroup host, View child, AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) {
View page = viewPager.getCurrentPageView();
performAccessibilityAction(page, AccessibilityNodeInfo.ACTION_CLICK, Bundle.EMPTY);
}
return super.onRequestSendAccessibilityEvent(host, child, event);
}
});
我已经验证了 'page' 是我认为的 RelativeLayout 父级。我还确认了onRequestSendAccessibilityEvent
正在被解雇,但它不会读取其子项的内容。我错过了什么吗?
更新
我也尝试过使用
viewpager.getCurrentPageView().sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
当我需要强制对讲重新阅读单个项目但如果我在页面上尝试它没有任何影响时,上述方法适用于另一个示例。
谢谢