我有一个扩展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());
可能有一种方法可以在第一次突出显示时保持初始语音控制的可访问性,但网上对此的了解不多,这足以满足我们的需求。另外,我没有额外的时间来尝试让它正常工作。
关于android - 如何防止android对讲说话seekbar进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38740141/