我在设计我的应用程序以使用 Talkback 访问时遇到了这个问题。
当 android 打开一个警报对话框时,它会读出单词“alert”,然后是对话框的其余部分。我没有使用警报对话框来显示警报,有没有办法确保android直接读出对话框而不读出“警报”这个词。
此外,如果我只想显示一些从屏幕上弹出的数据,并且可以像解除警报对话框一样被解除并且回话效果很好,那么是否有替代警报对话框的方法?
我在设计我的应用程序以使用 Talkback 访问时遇到了这个问题。
当 android 打开一个警报对话框时,它会读出单词“alert”,然后是对话框的其余部分。我没有使用警报对话框来显示警报,有没有办法确保android直接读出对话框而不读出“警报”这个词。
此外,如果我只想显示一些从屏幕上弹出的数据,并且可以像解除警报对话框一样被解除并且回话效果很好,那么是否有替代警报对话框的方法?
有点晚了,但是对于现在阅读此内容的任何人,请像这样覆盖对话框的视图:
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
,使用记录器中记录的那个。
根据此 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;
}