Android对讲可访问性-附加到内容描述末尾
是否可以在布局的末尾附加要读取的内容?设置根视图的内容描述将覆盖所有内容,然后不会读取子视图。此外,布局的getContentDescription()不会返回实际读取为其所有子项的组合的内容-它只返回为布局显式设置的内容,如果未设置任何内容,则返回null 我正在考虑在布局中添加一个虚拟视图,只是为了让文本读取以进行对讲,但这似乎有点不对劲Android对讲可访问性-附加到内容描述末尾,android,accessibility,talkback,Android,Accessibility,Talkback,是否可以在布局的末尾附加要读取的内容?设置根视图的内容描述将覆盖所有内容,然后不会读取子视图。此外,布局的getContentDescription()不会返回实际读取为其所有子项的组合的内容-它只返回为布局显式设置的内容,如果未设置任何内容,则返回null 我正在考虑在布局中添加一个虚拟视图,只是为了让文本读取以进行对讲,但这似乎有点不对劲 特别是,我们希望在对讲中添加描述,如“已选择。双击可取消选择”和其他类似描述 首先分离描述元素的内容描述和描述如何与元素交互的使用提示 如果一个视图组没有
特别是,我们希望在对讲中添加描述,如“已选择。双击可取消选择”和其他类似描述 首先分离描述元素的内容描述和描述如何与元素交互的使用提示 如果一个视图组没有明确的内容描述,它将尝试通过整理该视图组的子视图的描述来推断描述 您应该为视图组设置明确的内容描述 此行为意味着您拥有完全控制权,并且将来对布局的更改不会包括视图组内容描述更改的副作用 附加选定状态的一种方法是使用自定义视图组:
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\u selected
是一个字符串资源,解析为:%1$s selected
对于用法提示(“双击选择/取消选择”),可以使用辅助功能委托。根据Javadocs,这个。不应该覆盖contentDescription。不要重写此方法,因为它不会影响呈现给辅助功能服务的内容描述。您必须调用{@link#setContentDescription(CharSequence)}来修改内容描述。