我有一个自定义控件扩展SeekBar
,其中我已经覆盖了onInitializeAccessibilityNodeInfo
如下:
@Override
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(info);
info.setClassName(TextView.class.getName());
}
然后我将内容描述设置为该控件的“我的控件”,但是当辅助功能焦点来到该控件时,对讲仍然会说“我的控件,%x百分比”。我不希望它说出进度,即“x%”。相反,我想覆盖对讲文本,这样它就不会宣布“x%...”,而是宣布我设置的自定义文本,例如“选择 x 值”。怎么做?
我在 C# 中的 Xamarin.Android 中做了类似的事情,但代码应该很容易移植回 Java。另外,请记住,当突出显示控件时,这些更改将覆盖初始对讲。
首先在跟踪值集的 textView 上:
textView.AccessibilityLiveRegion = AndroidViews.AccessibilityLiveRegion.Assertive;
然后我必须创建自己的自定义AccessibilityDelegate
:
public class CustomSeekbarDelegate : Android.Views.View.AccessibilityDelegate
{
public override void OnInitializeAccessibilityEvent(AndroidViews.View host, AccessibilityEvent e)
{
//NOTE: Don't call base to prevent seekbar talkback percentage
}
}
seekBar.SetAccessibilityDelegate(new CustomSeekbarDelegate());
可能有一种方法可以在第一次突出显示时保持初始语音控制的可访问性,但网上对此的了解不多,这足以满足我们的需求。另外,我没有额外的时间来尝试让它发挥作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)