2014-09-19 66 views
3

我試圖改變TalkBack在通過可訪問性關注ImageView時發佈的文本。在Android中改變talkback對話的文字

Android的文檔指出,我們應該創建一個AccessibilityDelegate,並覆蓋onPopulateAccessibilityEvent(我使用的是支持庫,因爲我也支持薑餅)

因此,我的代碼如下:

public static void setImageDelegate(View view) { 
    AccessibilityDelegateCompat delegate = new AccessibilityDelegateCompat() { 
     @Override 
     public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) { 
      event.getText().add(event.getContentDescription() + ", image"); 
     } 
    }; 
    ViewCompat.setAccessibilityDelegate(view, delegate); 
} 

當我在我的imageview上調用此函數時,委託被設置,但修改後的文本未被讀取。它只是讀取原始內容描述。我做錯了什麼或缺少關於可訪問性功能的東西?

逐句通過代碼,它似乎是添加正確的文本,但仍然沒有改變口頭文字。

注意:以上是一個人爲的例子,可以使用內容描述,但我試圖找出爲什麼它不工作,然後我嘗試自定義視圖。

回答

6

在ICS及更高版本中,在大多數情況下,話語提示不使用輔助功能事件文本。相反,它會檢查由視圖公開的AccessibilityNodeInfo的文本和內容描述。你需要重寫onInitializeAccessibilityNodeInfo。

但是在大多數情況下,您只需要調用View.setContentDescription。

在這種特殊情況下,由於TalkBack處理說話控制類型和功能,因此不應設置任何內容。我們強烈建議開發人員不要添加「按鈕」或「圖片」等描述。

+0

感謝您的答覆阿蘭夫。很多時候,我在覆蓋onInitializeAccessibilityNodeInfo時遇到了問題。我提交了一個問題:https://code.google.com/p/android/issues/detail?id=76423&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars,你會碰巧知道這件事嗎? – 2014-09-23 21:46:18

+2

該問題目前分配給我。我們正在研究它! – alanv 2014-09-24 04:59:25

+0

真棒,感謝您的幫助! – 2014-09-24 06:45:24

相關問題