2013-10-07 47 views
9

我有編輯文本用於在創建帳戶時輸入名字,其提示是「Jane」(作爲名字)。我也想在這個edittext上有關於可訪問性的內容描述,說「first name」。 當我設置提示和內容描述警告彈出「不要同時設置contentDescription和提示:contentDescription將掩蓋提示」,這很好,這只是內容描述不掩蓋提示。當我打開TalkBack時,它仍會讀取提示而不是內容描述。編輯文本中的Android可訪問性提示

任何人都可以幫助我。 Thnx。

+0

你可以找到答案[here](http://stackoverflow.com/a/37074785/6300678)。 –

回答

2

根據我的理解,android:hint是指TextViews(及其子類)中文本的佔位符,只要它們不顯示任何文本,而android:contentDescription則表示爲非文本的替代文本描述內容(圖片...)。因此,我只會在EditText上設置提示。

+1

我剛纔意識到,如果我選擇輸入類型的textPassword它會讀取內容描述而不是提示,但我不明白爲什麼這個屬性會影響可訪問性。顯然,我不能在所有編輯文本 – Damir

+0

@Damir上使用此輸入類型,雖然我沒有意識到這一點,但它有道理。具有inputType textPassword的EditText或多或少是非文本內容,因此它需要一個contentDescription。據我所知,提示只能通過輔助功能軟件讀取,以防文本內容當前不在TextView中,否則文本被讀取。我猜沒有可訪問性軟件會讀取輸入類型textPaswort EditText的文本,當已經輸入內容時,它將不會讀取提示,而是在兩種情況下都輸入contentDescription(文本輸入或不輸入)。 –

+0

「據我瞭解,提示只能通過輔助功能軟件讀取,以防文本內容當前不在TextView中,否則文本被讀取。」 - 我以爲同樣的事情,但事實並非如此,即使我在添加內容描述時提示被讀取,而Eclipse中的警告狀態也不同。 「不要同時設置contentDescription和提示:contentDescription會掩蓋提示」 – Damir

0

我遇到了同樣的問題,並通過在啓用輔助功能服務時將提示設置爲null來解決此問題。因爲它啓用時用戶可能不需要提示。

private void setAccessibility() 
{ 
    if (isExploreByTouchEnabled()) 
    {   
     firstName.setHint(null); 
     firstName.setContentDescription("first name"); 
    } 
} 

public boolean isExploreByTouchEnabled() 
{ 
    AccessibilityManager am = (AccessibilityManager) getContext().getSystemService(ACCESSIBILITY_SERVICE); 
    boolean isAccessibilityEnabled = am.isEnabled(); 
    boolean isExploreByTouchEnabled = am.isTouchExplorationEnabled(); 
    return isAccessibilityEnabled && isExploreByTouchEnabled; 
}