共用方式為


Android 上的輔助功能

此頁面說明如何使用Android輔助功能 API,根據 輔助功能檢查清單建置應用程式。 如需其他平臺 API, 請參閱 iOS 輔助功能和OS X 輔助 功能頁面。

描述 UI 元素

Android 提供 ContentDescription 螢幕助讀 API 用來提供控制項用途的無障礙描述的屬性。

您可以在 C# 或 AXML 版面設定檔案中設定內容描述。

C#

描述可以在程式代碼中設定為任何字串(或字串資源):

saveButton.ContentDescription = "Save data";

AXML 版面配置

在 XML 版面設定中,使用 android:contentDescription 屬性:

<ImageButton
    android:id=@+id/saveButton"
    android:src="@drawable/save_image"
    android:contentDescription="Save data" />

使用 TextView 的提示

針對 EditTextTextView 資料輸入的控制項,請使用 Hint 屬性來提供所預期輸入的描述(而非 ContentDescription)。 輸入某些文字時,文字本身會「讀取」,而不是提示。

C#

在程式 Hint 代碼中設定 屬性:

someText.Hint = "Enter some text"; // displays (and is "read") when control is empty

AXML 版面配置

在 XML 版面設定檔案中, android:hint 使用 屬性:

<EditText
    android:id="@+id/someText"
    android:hint="Enter some text" />

若要將標籤與數據輸入控件產生關聯,請使用 LabelFor 屬性

C#

在 C# 中,將 LabelFor 屬性設定為此內容所描述之控件的資源識別碼(通常是在標籤上設定此屬性,並參考其他輸入控制項):

EditText edit = FindViewById<EditText> (Resource.Id.editFirstName);
TextView tv = FindViewById<TextView> (Resource.Id.labelFirstName);
tv.LabelFor = Resource.Id.editFirstName;

AXML 版面配置

在版面配置 XML 中, android:labelFor 使用 屬性來參考另一個控件的識別碼:

<TextView
    android:id="@+id/labelFirstName"
    android:hint="Enter some text"
    android:labelFor="@+id/editFirstName" />
<EditText
    android:id="@+id/editFirstName"
    android:hint="Enter some text" />

宣佈輔助功能

AnnounceForAccessibility在任何檢視控件上使用 方法,在啟用輔助功能時,將事件或狀態變更傳達給使用者。 對於內建的旁白提供足夠意見反應的大多數作業而言,不需要此方法,但應該使用其他資訊對使用者有説明的地方。

下列程式代碼顯示呼叫 AnnounceForAccessibility的簡單範例:

button.Click += delegate {
  button.Text = string.Format ("{0} clicks!", count++);
  button.AnnounceForAccessibility (button.Text);
};

變更焦點 設定

可存取的導覽仰賴焦點的控件,協助使用者瞭解可用的作業。 Android 提供 Focusable 屬性,可將控件標記為能夠在瀏覽期間接收焦點。

C#

若要防止控制項使用 C# 取得焦點,請將 屬性設定 Focusablefalse

label.Focusable = false;

AXML 版面配置

在版面配置 XML 檔案中, android:focusable 設定 屬性:

<android:focusable="false" />

您也可以使用nextFocusDownnextFocusLeftnextFocusRightnextFocusUp 屬性來控制焦點順序,通常會在版面配置 AXML 中設定。 使用這些屬性,以確保使用者可以輕鬆地瀏覽畫面上的控制件。

輔助功能和當地語系化

在上述範例中,提示和內容描述會直接設定為顯示值。 最好在Strings.xml檔案中使用值,例如:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="enter_info">Enter some text</string>
    <string name="save_info">Save data</string>
</resources>

C# 和 AXML 版面設定檔案中會顯示使用字串檔案中的文字:

C#

不要在程式代碼中使用字串常值,而是使用 Resources.GetText查閱字串檔案中的翻譯值:

someText.Hint = Resources.GetText (Resource.String.enter_info);
saveButton.ContentDescription = Resources.GetText (Resource.String.save_info);

AXML

在設定 XML 輔助功能屬性中,例如 hintcontentDescription 可以設定為字串識別碼:

<TextView
    android:id="@+id/someText"
    android:hint="@string/enter_info" />
<ImageButton
    android:id=@+id/saveButton"
    android:src="@drawable/save_image"
    android:contentDescription="@string/save_info" />

將文字儲存在個別檔案的優點是可在您的應用程式中提供檔案的多種語言翻譯。 請參閱 Android 當地語系化指南,以瞭解如何將當地語系化字串檔案新增至應用程式專案。

測試協助工具

請遵循 下列步驟 ,在 Android 裝置上啟用 TalkBack 和 Explore by Touch,以測試輔助功能。

如果 Google Play 未出現在 設定 輔助功能中>,您可能需要從 Google Play 安裝 TalkBack