TalkBack, не говорите "оповещение" при переходе к диалоговому окну предупреждения (или) альтернативе диалоговому окну предупреждения
Я столкнулся с этой проблемой, когда проектировал свое приложение так, чтобы оно было доступно через Talkback.
Когда андроид открывает диалоговое окно с предупреждением, он зачитывает слово "предупреждение", за которым следует остальная часть диалога. Я не использую диалоговое окно оповещения для отображения оповещения как такового, есть ли способ убедиться, что андроид считывает диалоговое окно напрямую, не считывая слово "оповещение".
Кроме того, есть ли альтернатива диалоговому окну предупреждения, если я просто хочу отобразить некоторые данные, которые всплывают на экране и могут быть отклонены так же, как закрывается диалоговое окно предупреждения, и этот разговор хорошо работает?
1 ответ
Немного поздно, но для тех, кто читает это сейчас, переопределите вид диалога следующим образом:
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, вы можете сделать это, просто переопределив метод View.dispatchPopulateAccessibilityEvent.
Например:
@Override
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
//super.dispatchPopulateAccessibilityEvent(event);
event.setBeforeText("My custom alert title text");
event.getText().clear();
return true;
}