Using a custom TextField implementation, but it still uses the BasicTextField provided by compose.
BasicTextField(
modifier = Modifier
.fillMaxWidth()
.semantics(mergeDescendants = true) {
this.contentDescription = (contentDescription
?: "") + (if (!placeholder.isNullOrBlank() && value.isBlank()) placeholder
else value) + counterText
if (disabled) {
disabled()
}
},
value = value,
onValueChange = { newValue ->
onValueChange(newValue)
},
enabled = enabled,
readOnly = readOnly,
textStyle = mergedTextStyle,
cursorBrush = SolidColor(contentColor),
keyboardOptions = keyboardOptions,
keyboardActions = keyboardActions,
interactionSource = interactionSource,
singleLine = singleLine,
maxLines = maxL,
minLines = minL
) {...
The semantics read exactly as I would like them to on original focus. But when I type a character all it reads is that character.
key entered, A = “A”.
I would like the semantics to announce “A, ${counterText}”. But I can’t find a way to tie into what looks to be the TextInputService or something similar to that. Is there a concept I’m missing?
So I found what I was looking for. It’s annoying because I can’t seem to find examples on the Compose Developer instructions, but it works pretty well.
With this the Text will say
”A, $stateDescription, $contentDescription”