背景
TalkBack 螢幕閱讀器的使用者可以透過下列兩種方式瀏覽應用程式中的項目:
- 輕觸探索:用一根手指在螢幕上拖曳,藉此瞭解各項元素的實際排列方式。
- 線性導覽:向左右滑動,藉此在項目間前後移動,不過一次僅能探索一個項目。
Android 應用程式應可同時支援輕觸探索與線性導覽。在進行線性導覽時,遍歷順序應該大致與視覺順序相符,否則即應以其他方式盡可能改善遍歷順序,以便為螢幕閱讀器使用者提供符合邏輯的順序。
根據預設,TalkBack 會使用應用程式的 View 階層來決定線性導覽狀態下的項目遍歷順序。
導入作業
如果應用程式的 View 階層與應用程式的邏輯結構不一致,開發人員可以設定 android:accessibilityTraversalBefore
或 android:accessibilityTraversalAfter
,藉此調整無障礙工具的遍歷順序。這些屬性會提示螢幕閱讀器應依何種順序前往各個 View 的內容。如果 View 之間沒有前後關係,則會按照螢幕閱讀器決定的順序遍歷。
無障礙工具遍歷順序與用於鍵盤導覽的「輸入焦點」順序不同,鍵盤導覽順序是由 android:nextFocusDown
、android:nextFocusLeft
、android:nextFocusRight
和 android:nextFocusUp
指定。
在使用 accessibilityTraversalBefore
和 accessibilityTraversalAfter
時,不妨參考下列建議,以免過度限制遍歷順序:
- 僅在邏輯順序與 View 階層順序不同時,才使用這些屬性。
- 使用者可以透過輕觸探索聚焦的每個元素,應該也可以透過線性導覽聚焦。
- 無論方向為何,遍歷順序應與線性導覽一致。例如,如果使用手勢將焦點移至「下一個」元素,接著再使用手勢將焦點移至「上一個」元素,則焦點應該一律返回原本的元素。
- 在定義
accessibilityTraversalBefore
與accessibilityTraversalAfter
時,不應導入循環週期,否則使用者在進行線性導覽時可能會發生無法將焦點移至某些元素的狀況。
設計
在設計應用程式時,請考量該如何讓螢幕閱讀器的使用者以線性方式遍覽介面中呈現的資訊。在理想狀態下,遍歷順序會與資訊的實際視覺呈現順序一致。不過如果兩者不可能相符,您可以指定一個符合介面邏輯結構或設計邏輯的遍歷順序。
進一步瞭解如何打造易於操作的導覽方式。
測試
手動評估應用程式無障礙工具遍歷順序的方法如下:
- 開啟 TalkBack。
- 開啟應用程式。
- 使用線性導覽手勢將無障礙焦點移至畫面上的各項元素。
- 確認 TalkBack 的焦點是否按照有邏輯的順序在螢幕上的元素之間移動,並且能夠在前往各項元素時正確朗讀出元素項目所代表的意義。
- 確認 TalkBack 的焦點在螢幕元素之間前後移動 (無論瀏覽方向為何) 的方式是否一致。
Android 的自動化測試工具可以偵測出一些遍歷順序問題。您可以使用 Android 專用無障礙功能掃描工具,手動測試裝置上的應用程式。如要進行自動測試,請啟用 Espresso 和 Robolectric 中的無障礙程度檢查功能。