Android - Read out page number with ViewPager2 or Tablayout

Viewed 411

I have a ViewPager2 and a TabLayout on one of the screens and they are linked together with TabLayoutMediator. When TalkBack is enabled on the device, I need either of them to read out the page number when page is changed. e.g. page 1 of 9 and etc.

Does anyone know how to do this?

1 Answers

You can announce the page number by registerning ViewPager2.OnPageChangeCallback and override the onPageSelected() Then use: a View to announce a Talkback with announceForAccessibility()

mViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {

    @Override
    public void onPageSelected(int position) {
        myView.announceForAccessibility("Page number: " + position));
    }
    
});

With TabLayout

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                myView.announceForAccessibility("Page number: " + tab.getPosition()));
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
Related