Android 回话,而不是说;“警惕”;转到警报对话框(或)警报对话框的替代选项时

Android 回话,而不是说;“警惕”;转到警报对话框(或)警报对话框的替代选项时,android,dialog,accessibility,android-alertdialog,talkback,Android,Dialog,Accessibility,Android Alertdialog,Talkback,我在设计使用Talkback访问的应用程序时遇到了这个问题 当android打开一个警报对话框时,它会读出“警报”一词,然后是对话框的其余部分。 我没有使用警报对话框来显示警报,有没有办法确保android直接读取对话框而不读取“警报”一词 另外,如果我只想显示屏幕上弹出的一些数据,并且可以像关闭警报对话框一样关闭这些数据,并且可以使用对讲功能,那么有没有替代警报对话框的方法呢?基于,您只需覆盖该方法即可 例如: @Override public boolean dispatchPopulate

我在设计使用Talkback访问的应用程序时遇到了这个问题

当android打开一个警报对话框时,它会读出“警报”一词,然后是对话框的其余部分。 我没有使用警报对话框来显示警报,有没有办法确保android直接读取对话框而不读取“警报”一词

另外,如果我只想显示屏幕上弹出的一些数据,并且可以像关闭警报对话框一样关闭这些数据,并且可以使用对讲功能,那么有没有替代警报对话框的方法呢?

基于,您只需覆盖该方法即可

例如:

@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
    //super.dispatchPopulateAccessibilityEvent(event);
    event.setBeforeText("My custom alert title text");
    event.getText().clear();
    return true;
}

有点晚了,但是对于现在阅读本文的任何人来说,请如下覆盖对话框的视图:

class NoAlertDialog @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0)
    : RelativeLayout(context, attrs, defStyleAttr) {

    init {
        inflate(context, R.layout.dialog, this)
    }

    override fun dispatchPopulateAccessibilityEvent(event: AccessibilityEvent?): Boolean {
        Log.e("Logging", "Event dispatched: " + event?.action)
        if (event?.action == AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED) {
            return true
        }
        return super.dispatchPopulateAccessibilityEvent(event)
    }
}

如果它不起作用,请尝试比较不同的
可访问性事件
int
,使用记录程序中记录的事件。

您正在测试哪个版本的对讲?我正在nexus 5上测试它,运行最新版本的对讲,3.5.2.@JehoshaphAkshay你找到过这个问题的解决方案吗?@user1064249不,我没有:(我应该在哪个视图上设置它?),所以你可以在任何视图中覆盖它。你可以看看如何做。