android - 如何防止android对讲说话seekbar进度

标签 android seekbar talkback

我有一个扩展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/

相关文章:

Android SeekBar 标记值在哪里

Android:搜索栏更改仅由用户检测

android - 随着搜索栏的进展,以特定进度触发事件

Android:如何将应用程序翻译成不同的语言并在市场上销售?

android - AudioFlinger(59) : RecordThread: buffer overflow when Activity is paused?

java - 安卓资源命名空间

安卓对讲公告中断

java - 在 .add() 之后无法 .getKey() 到 Cloud Firestore

android - 如何让 TalkBack 自动读出 TextView 的错误信息?

android - React-Native Talkback 以错误的语言读取组件的可访问性角色