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 的提示
針對 EditText
和 TextView
資料輸入的控制項,請使用 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 連結具有標籤的輸入欄位
若要將標籤與數據輸入控件產生關聯,請使用 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# 取得焦點,請將 屬性設定 Focusable
為 false
:
label.Focusable = false;
AXML 版面配置
在版面配置 XML 檔案中, android:focusable
設定 屬性:
<android:focusable="false" />
您也可以使用nextFocusDown
、nextFocusLeft
、 nextFocusRight
nextFocusUp
屬性來控制焦點順序,通常會在版面配置 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 輔助功能屬性中,例如 hint
與 contentDescription
可以設定為字串識別碼:
<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。