2016-12-22 23 views
0

是否可以追加到底什麼將被讀取的佈局?設置根視圖的內容描述將覆蓋所有內容,然後不讀取子視圖。此外,佈局的getContentDescription()不會返回實際讀取的內容作爲其所有子項的組合 - 它只返回爲佈局顯式設置的內容,如果沒有設置,則爲null。Android對講輔助功能 - 追加到內容說明的結尾

我正在考慮增加一個虛擬視圖的佈局正好有文本閱讀對講,但似乎哈克。

特別是,我們正在尋找有補充說明,以對講,如「這是選擇輕按兩下則可取消選擇」和其他類似的描述。

回答

0

首先開始通過分離所述內容描述,它描述了元件,和使用提示,它描述瞭如何與元件進行交互。

如果ViewGroup中沒有明確的內容描述,它會嘗試通過比較需求的ViewGroup的孩子的描述推斷描述。

應該設置了一個ViewGroup明確的內容描述。 I advocate going further and making the children inaccessible directly

此行爲意味着你有完全的控制,並改變爲未來的佈局將不包括在的ViewGroup也改變了內容描述的副作用。與選擇狀態追加

一種方法是使用自定義的ViewGroup:

public class SelectStateDescribingLinearLayout extends LinearLayout { 

    public SelectStateDescribing(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    public CharSequence getContentDescription() { 
     CharSequence contentDescription = super.getContentDescription(); 
     return isSelected() ? appendSelectedTo(contentDescription) : contentDescription; 
    } 

    private String appendSelectedTo(CharSequence contentDescription) { 
     return getResources().getString(R.string.viewgroup_selected, contentDescription); 
    } 
} 

其中R.string.viewgroup_selected是一個字符串資源解析爲:<string name="viewgroup_selected">%1$s selected</string>

對於使用提示(「槍王選擇/取消選擇「),您可以使用可訪問性委託。這question has been answered here