Почему Compose добавляет дополнительный текст в Accessibility?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему Compose добавляет дополнительный текст в Accessibility?

Сообщение Anonymous »

Поэтому я работаю над функцией специальных возможностей в своем приложении.
Моя проблема в том, что TalkBack объявляет лишние тексты независимо от удовольствия от ClearAndSetSemantics{}.
Например, для кнопки закрытия написано: «Описание содержимого кнопки «Закрыть», кнопка «Вне списка» вместо «Описание содержимого кнопки «Закрыть», кнопка» или для каждой звезды объявляется: «1 Элемент значка рейтинга дважды нажмите, чтобы активировать» вместо «1 элемент значка рейтинга».
Проблему можно воспроизвести с помощью этого кода:

Код: Выделить всё

@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun Example(modifier: Modifier = Modifier) {
Column(
modifier = modifier
.fillMaxWidth()
.semantics {
isTraversalGroup = true
}
.background(Color.White)
) {
IconButton(
modifier = Modifier
.clearAndSetSemantics {
contentDescription = "Close button content desctiption, button"
testTag = "closeButtonTextTag"
},
onClick = {}
) {
Icon(
Icons.Default.Close,
contentDescription = ""
)
}

Spacer(modifier = Modifier.height(16.dp))

Text(text = "Text one description")

Spacer(modifier = Modifier.height(16.dp))

Text(text = "Text two description")

Spacer(modifier = Modifier.height(16.dp))

Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.Absolute.SpaceEvenly
) {
for (ratingIndex in 1..5) {
Column(
modifier = Modifier.weight(1f)
) {
Icon(
modifier = Modifier
.size(30.dp)
.align(Alignment.CenterHorizontally)
.clickable {

}
.clearAndSetSemantics {
contentDescription = "$ratingIndex Rating icon item"
testTag = "ratingIconTestTag"
},
imageVector = if (ratingIndex < 3) {
Icons.Default.Star
} else {
Icons.Filled.Star
},
contentDescription = "",
tint = Color.Unspecified
)

Text(
modifier = Modifier
.padding(vertical = 8.dp)
.semantics {
invisibleToUser()
testTag = "textTestTag"
},
text = "Last text string"
)
}
}
}
}
}

@Preview
@Composable
fun ExamplePreview() {
Example(Modifier.background(Color.White))
}
Если я помещу блок ClearAndSetSemantics{} в столбец «Звезда рейтинга», он будет работать нормально, но в этом случае фокус доступности получит весь столбец, а не значок.
Чего мне не хватает? Или это работает так, как ожидалось?

Подробнее здесь: https://stackoverflow.com/questions/786 ... essibility
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»