HorizontalPager
ignores the scrollable state of the parent Column
:
When we have a scrollable Column
with a non-scrollable Pager
inside, and we have the last on-screen Pager
item focused,
TalkBack prefers to scroll the Pager
to the next page ignoring the fact that the current page still has some content below.
This behavior makes the rest of the content inaccessible.
HorizontalPagerFragment
pager_scroll_bug.mp4
Since custom focus order is not supported by Compose,
it is impossible to quickly jump out of the HorizontalPager
to the segment with tabs - we currently just go to the previous page.
This way, we have to necessarily scroll through all the pages back to the first one to reach tabs with categories.
This makes navigation clunky, and tabs do not serve their purpose to quickly bring the user to the desired page. It would be nice to have a way
to override this behavior with custom focus order.
Also, after selecting and clicking on a tab, we have to scroll through all the tabs till the end - maybe it could be better to allow
to automatically move the accessibility focus inside the Pager
once a tab is selected. And then, when moving backwards, to jump out of the Pager
to the active tab.
HorizontalPagerFragment
pager_focus_order.mp4
When two Fragment
s have the same topBar
(same back button, same text), and we go from one such Fragment
to the other one, the TalkBack accessibility focus jumps to the middle of the content. The expected behavior is to always go to the top left corner of the new screen (to the back button) when Fragment
s are replaced just like it works in every other case when topBar
s have different buttons and/or texts
InitialFocusFragment
initial_element_focus_bug.mp4
When we have a WebView
with a longer text, TalkBack does not properly scroll it as the focus goes through next paragraphs of text.
In addition, when the focus reaches the last element, TalkBack reports that there are no more focusable elements on the page. It is wrong - there is a button is the Scaffold
. If we ignore its message about no more elements and continue swiping, WebView
starts scrolling, and once it scrolls until the end, then TalkBack suddenly picks the previously-invisible button up.