與使用者介面互動時,螢幕閱讀器等無障礙服務的使用者必須仰賴文字標籤。
螢幕閱讀器會朗讀文字標籤,以及元素類型或狀態的相關資訊。因此,應用程式開發人員不需要在標籤中納入類型或狀態資訊。例如:
- 朗讀可點擊的
Button
元素時,TalkBack 會為開發人員提供的文字標籤附加「按鈕」這個字詞。如果開發人員在文字標籤中納入了「按鈕」這個字詞 (例如「儲存按鈕」),TalkBack 可能會朗讀「按鈕」兩次 (也就是「儲存按鈕按鈕」)。 - 假設介面含有
CheckBox
元素,螢幕閱讀器會依據元素勾選狀態朗讀「已勾選」或「未勾選」,以及開發人員提供的文字標籤。如果開發人員在文字標籤中納入了「已勾選」或「未勾選」的字詞,使用者可能會聽見同樣的資訊兩次。
一般來說,輔助技術會定義符合使用者需求的一組特有手勢或互動行為。應用程式提供的無障礙功能標籤會因所用輔助技術而異,但不應提供具體的互動指示 (可能較不適當)。例如:
- TalkBack 會提供專屬的互動指示來說明可點擊的 UI 元素,像是「輕觸兩下即可選取」。如果應用程式提供的無障礙功能標籤含有這些互動指示,TalkBack 可能會朗讀相同的互動指示兩次。如果應用程式提供的指示相同,則不適用於「開關功能」使用者。
導入作業
標準元素
為標準使用者介面元素 (由 Android SDK、Android 支援資料庫或 Android Design 支援資料庫產生) 提供文字標籤時,請使用簡短的本地化字串說明該元素的功能或意義。
完善導入的使用者介面不會在 android:contentDescription
、android:text
或 android:hint
屬性值中,加入元素類型或狀態說明。
自訂檢視區塊
建立含有自訂檢視區塊的使用者介面元素時,請依據用途擴充最相關的 View
子類別,以便導入的自訂檢視區塊繼承最多的平台標準無障礙功能互動行為。在多數情況下,系統會代替應用程式管理如何適當呈現檢視區塊的類型和狀態。
應用程式可以透過 AccessibilityDelegate
或 View#onInitializeAccessibilityNodeInfo
調整無障礙服務解讀自訂檢視區塊的方式,當中包含如何表示類型或狀態。如要使用這個方法,檢視區塊必須直接管理自身的 AccessibilityNodeInfo
呈現方式。
如為資訊階層較為複雜或可執行多種動作的自訂檢視區塊,只要使用 ExploreByTouchHelper
,即可輕鬆向 Android 的無障礙服務呈現虛擬的檢視區塊階層。
標準元素
為標準使用者介面元素 (由 Jetpack Compose 標準程式庫產生) 提供文字標籤時,請使用簡短的本地化字串說明該元素的功能或意義。
完善導入的使用者介面不會在內容說明或 Modifiers.semantics#text
屬性中,加入元素類型或狀態說明。
應用程式可以使用 Modifier.semantics 或 Modifier.semantics#role,調整自訂低階層可組合函式向無障礙服務顯示的方式,包含如何表示類型或狀態。
設計
請參閱質感設計無障礙功能指南,進一步瞭解如何撰寫成效良好的無障礙功能標籤。
測試
如要手動找出含有類型或狀態標籤的使用者介面元素,請按照下列指示操作:
- 開啟 TalkBack。
- 開啟應用程式。
- 將無障礙功能的焦點移至要評估的項目。
- 聆聽 TalkBack 朗讀的焦點項目說明,並確認項目的類型或狀態在說明中是否出現超過一次。
Android 的自動化測試工具可以偵測出某些含有類型、狀態或互動指示標籤的使用者介面元素項目。你可以使用 Android 專用無障礙功能檢查工具,在裝置中手動測試應用程式。如要進行自動測試,請啟用 Espresso 和 Robolectric 中的無障礙程度檢查功能。