2016-12-22 5 views
0

レイアウトに何が読み込まれるのかを最後に追加することはできますか?ルートビューのコンテンツ記述を設定するとすべてが上書きされ、子ビューは読み込まれません。さらに、レイアウトのgetContentDescription()は、実際に読み込まれた内容をすべての子アイテムのコンポジットとして返しません。レイアウトに対して明示的に設定されたものだけを返します。何も設定されていない場合はnullです。Androidトークバックのアクセシビリティ - コンテンツの説明の末尾に追加

レイアウトにダミービューを追加して、トークバック用にテキストを読み込むことを考えていますが、それはハッキーです。

特に、「これが選択されています。ダブルタップして選択を解除」などのトークバックに説明を追加することを検討しています。

答えて

0

最初に、要素を説明する内容の説明と、要素とやりとりする方法を説明する使用方法のヒントを分けることから始めます。

ViewGroupに明示的なコンテンツの説明がない場合、そのViewGroupの子の説明を照合して説明を推測しようとします。

You は、ViewGroupの明示的なコンテンツの説明を設定する必要があります。 I advocate going further and making the children inaccessible directly

この動作では、完全なコントロールがあり、将来のレイアウトの変更には、ViewGroupのコンテンツ記述の副作用も含まれないことになります。 R.string.viewgroup_selectedはに解決する文字列リソースである

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); 
    } 
} 

:選択した状態を追加する

一つの方法は、カスタムのViewGroup使用することを選択し、使用のヒントについて<string name="viewgroup_selected">%1$s selected</string>

(「ダブルタップを/選択解除」)、アクセシビリティデリゲートを使用できます。これはquestion has been answered hereです。

関連する問題