3

私は、非常に複雑ないくつかの相対的なレイアウト兄弟で構成されているビューページャーを使用しています。

相対レイアウトをクリックすると、ページ全体が強調表示され、期待どおりにタイトルといくつかのテキストビューが次々に読み上げられます。

ビューページャーをスクロールすると、クリックすると最初のページを読むのと同じように、トークバックが次のページを読むようになります。次に、2 ページ目、3 ページ目などにスクロールしてそれらのレイアウトをクリックすると、トークバックが期待どおりに読み上げられます。

スクロール イベントが完了した後、クリック動作を実現しようとしています。

これが、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);
        }
    });

「ページ」が、私が考える RelativeLayout の親であることを確認しました。が起動していることも確認しましたonRequestSendAccessibilityEventが、その子の内容を読み取っていません。何か不足していますか?

更新しました

私も使ってみました

viewpager.getCurrentPageView().sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);

上記は、talkback に 1 つのアイテムを強制的に再読み込みさせる必要がある別の例で機能しましたが、ページで試しても何の影響もありません。

ありがとう

4

3 に答える 3