Fixed
Status Update
Comments
ss...@google.com <ss...@google.com>
ap...@google.com <ap...@google.com> #2
Hi. Thanks for reporting this. Fixed in alpha-04
as...@google.com <as...@google.com>
na...@google.com <na...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug: b/264018028
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
https://android-review.googlesource.com/2373449
Branch: androidx-main
commit e782987543a9f8ccd485e970ddc74564b24378db
Author: Vighnesh Raut <vighnesh.raut13@gmail.com>
Date: Mon Jan 02 15:27:40 2023
fix: tab row crashes when only 1 tab is added
Bug:
Test: Added unit test
Change-Id: I6381dbac304fc1d69d3708c6655f8b595668e93f
M tv/tv-material/src/androidTest/java/androidx/tv/material/TabRowTest.kt
M tv/tv-material/src/main/java/androidx/tv/material/TabRow.kt
Description
Version used: 1.0.1
I don't have a full explanation, but it seems that top level elements in Scaffold interfere with talkback. PositionIndicator, TimeText, full screen composables, but I'm guessing as I'm not sure what is going on. It makes it hard to reconcile the results from a11y testing with composeTestRule with actual manual testing.
It seems that A11y treats them as a single item because the bounds are all the same (full screen). But I'm not sure.
One example changing
```
val volumeState = volume()
Stepper(
value = volumeState.current.toFloat(),
onValueChange = { if (it > volumeState.current) increaseVolume() else decreaseVolume() },
steps = volumeState.max - 1,
valueRange = (0f..volumeState.max.toFloat()),
increaseIcon = {
increaseIcon()
},
decreaseIcon = {
decreaseIcon()
}
) {
DeviceChip(
modifier = Modifier.padding(horizontal = 18.dp),
volumeState = volumeState,
audioOutput = audioOutput,
onAudioOutputClick = onAudioOutputClick
)
}
if (showVolumeIndicator) {
VolumePositionIndicator(
modifier = Modifier.semantics {
contentDescription = "Volume ${volumeState.current}"
},
volumeState = volume,
autoHide = false
)
}
}
```