小编clu*_*ser的帖子

Android AccessibilityDelegate 强制读取 ViewGroup 而不是子项

我正在使用一个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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

我已经验证“page”是我认为的RelativeLayout 父级。我还确认正在onRequestSendAccessibilityEvent被解雇,但它不会读取其子项的内容。我错过了什么吗?

更新

我也尝试过使用

viewpager.getCurrentPageView().sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
Run Code Online (Sandbox Code Playgroud)

当我需要强制对讲重读单个项目时,上面的内容适用于另一个示例,但如果我在页面上尝试它,则不会产生任何影响。

谢谢

java android accessibility talkback android-studio

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

accessibility ×1

android ×1

android-studio ×1

java ×1

talkback ×1