У меня есть представление, в котором пользователь вводит цель, дату, к которой нужно ее выполнить, и флажок подтверждения. Пользователь должен ввести все это, чтобы двигаться вперед. Таким образом, у меня есть проверки, чтобы увидеть, пусто ли какое-либо из полей. Вот код для этого. Этот код работает.
private fun toggleInputRequiredError(
isErrorVisible: Boolean,
view: TextInputLayout,
errorText: String
) {
when (isErrorVisible) {
true -> {
view.error = errorText
}
else -> view.error = null
}
}
toggleInputRequiredError(
!state.isGoalChecked,
goalAffirmationCheckBoxErrorContainer,
getString(R.string.required_field)
).run {
if (!state.isGoalChecked) {
goalAffirmationCheckBox.isFocusable = true
goalAffirmationCheckBox.requestFocus()
goalAffirmationCheckBox.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
}
}
toggleInputRequiredError(
!state.isValidDateInput,
goalDateInputLayout,
getString(R.string.required_field)
).run {
if (!state.isValidDateInput) {
goalCompletionDateInput.isFocusable = true
goalCompletionDateInput.requestFocus()
goalCompletionDateInput.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
}
}
toggleInputRequiredError(
!state.isValidDescriptionInput,
goalDescriptionInputLayout,
getString(R.string.required_field)
).run {
if( !state.isValidDescriptionInput) {
goalDescriptionInput.isFocusable = true
goalDescriptionInput.requestFocus()
goalDescriptionInput.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
}
}
Теперь мне нужно включить специальные возможности для этого просмотра, он также работает на большинстве телефонов, за исключением последних телефонов Samsung. Примером желаемого поведения является Pixel XL, а также Samsung S8. Вот изображение, чтобы показать это
На более новых Samsungs sendAccessibilityEvent , похоже, на самом деле не фокусируется на представлении это необходимо решить. Вот изображение, демонстрирующее это поведение на Samsung S10 + и Samsung Note 9.
Я установил описание содержимого этих представлений в XML. Я заметил, что новые телефоны Samsung будут читать текст «Обязательный» на экране, но не фокусироваться на нем. Это означает, что он игнорирует описание содержимого в XML. Последнее, что в представлении, которое необходимо сфокусировать, похоже, не возникает sendAccessibilityEvent (AccessibilityEvent.TYPE_VIEW_FOCUSED) event
Дайте мне знать, есть ли у вас какие-либо мысли о том, как решить эту проблему или у вас есть предложения, я могу попробовать