內容標籤

螢幕閱讀器等無障礙服務的使用者,必須仰賴內容標籤才能理解介面元素的含義。

在部分情況下 (例如於元素中以圖像方式傳達資訊時),內容標籤可提供文字說明,解釋元素的含義或相關聯的操作。

如果使用者介面中的元素沒有提供內容標籤,部分使用者可能會難以理解這些元素所傳達的資訊,或可透過介面執行哪些操作。

導入作業

查看

在介面中使用特定類型的 View 時,就必須提供內容標籤,說明該 View 的用途或相關聯的操作。

如何提供內容標籤

android:contentDescription

使用 ImageViewImageButtonCheckBox 或其他以圖像方式傳達資訊的 View 時,請使用 android:contentDescription 屬性為該 View 提供內容標籤。

內容標籤有時會取決於只在執行階段提供的資訊,View 的含義也可能隨著時間而變化。舉例來說,「播放」按鈕可能會在播放音樂時變成「暫停」按鈕。在這些情況下,請於適當的時機使用 View#setContentDescription(CharSequence contentDescription) 更新內容標籤。

無障礙服務說明 ViewGroup 時,通常會結合其子項 View 的內容標籤。如要覆寫這個行為,並指出你要自行替該項目及其無法聚焦的子項 View 提供說明,請在 ViewGroup 設定 contentDescription。在 ViewGroup 設定 contentDescription 時,你可能需要在其中加入子項 View 的內容標籤。

android:hint

如為 EditTexts 或可編輯的 TextViews,請使用 android:hint 屬性指出文字欄位的用途。請勿使用 android:contentDescription 做為可編輯的 View 的內容標籤

android:labelFor

請使用 android:labelFor 屬性,指出這個 View 應做為另一個 View 的內容標籤。

不需要提供內容標籤的情況

在某些情況下,你不必特別提供內容標籤:

  • TextView (或其子類別) 中顯示的文字會自動提供給無障礙服務,‏因此通常不必提供額外的內容標籤。
  • 裝飾用圖片或傳達無意義資訊的圖片,不需要內容標籤。在這種情況下,請將 android:contentDescription 屬性設為 "@null",或是將 android:importantForAccessibility 屬性設為 "no"

詳情請參閱 Android 開發人員培訓文件API 指南,瞭解如何導入內容標籤。

撰寫

在介面中使用特定類型的可組合函式時,就必須包含內容標籤,說明該可組合函式的用途或相關聯的操作。

如何提供內容標籤

內容說明

如要為 ImageIcon 或傳達圖像資訊的其他低階層可組合函式提供內容標籤,請設定內容說明。

  • 內容標籤可能會取決於執行階段資訊,可組合函式的含義也可能隨之變化。舉例來說,「播放」按鈕可能會在播放音樂時變成「暫停」按鈕。
  • 在部分情況下,你可能要將多個元素合併成單一可聚焦元素,從其子系元素合併內容標籤。瞭解如何合併元素

標籤參數

部分可組合函式 (如 TextField) 支援選填的 label 參數。設定標籤後,元素就會顯示傳遞至 label 的可組合函式。無障礙服務可以用於說明可組合函式。

不需要提供內容標籤的情況

在某些情況下,你不必提供內容標籤:

  • Text 中顯示的文字或包含 Text 的其他可組合函式,會自動提供給無障礙服務。
  • 裝飾用圖片或傳達無意義資訊的圖片。
    • 在這些情況下,請將 contentDescription 參數或 Modifier.semantics#contentDescription 屬性設定為 null,或呼叫 Modifier#clearAndSetSemantics

設計

設計使用者介面時,請仔細思考如何為以圖像方式呈現的內容設定標籤,方便無障礙服務的使用者輕鬆理解。內容標籤必須遵守下列原則:

  • 簡潔明瞭,清楚說明元素的含義或相關聯的操作。
  • 元素的內容標籤不得包含該元素的類型或狀態
  • 如果元素與某項操作相關聯,請說明該操作,而不是圖像的呈現方式。
  • 請勿指示使用者以特定方式與元素互動。

詳情請參閱「Material Design 無障礙功能編寫指南」。

測試

如何手動檢驗應用程式的使用者介面未缺少內容標籤:

  1. 開啟 TalkBack
  2. 開啟應用程式。
  3. 使用線性導覽手勢,將無障礙功能的焦點移至畫面上的各項元素。
  4. 如果 TalkBack 將焦點移到某些元素,但並未朗讀出該元素的含義,或是說出「未加上標籤」的訊息,表示該元素可能缺少內容標籤。

Android 的自動測試工具能偵測出缺少的內容標籤。你可以使用 Android 專用無障礙功能檢查工具,在裝置端手動測試應用程式。如要進行自動測試,請啟用 EspressoRobolectric 中的無障礙程度檢查功能。

搜尋
清除搜尋內容
關閉搜尋
主選單
1597716580589634391
true
搜尋說明中心
true
true
true
true
true
717068
false
false