3

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

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

此外,如果我只想显示一些从屏幕上弹出的数据,并且可以像解除警报对话框一样被解除并且回话效果很好,那么是否有替代警报对话框的方法?

4

2 回答 2

0

有点晚了,但是对于现在阅读此内容的任何人,请像这样覆盖对话框的视图:

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)
    }
}

如果它不起作用,请尝试比较不同的AccessibilityEvent int,使用记录器中记录的那个。

于 2020-08-21T14:31:31.270 回答
-1

根据此 Google Groups 帖子,您只需覆盖View.dispatchPopulateAccessibilityEvent方法即可。

例如:

@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
    //super.dispatchPopulateAccessibilityEvent(event);
    event.setBeforeText("My custom alert title text");
    event.getText().clear();
    return true;
}
于 2015-05-21T12:31:20.160 回答