diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt index 5a69125..595bda3 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/DefaultWheelTimePicker.kt @@ -87,12 +87,14 @@ internal fun DefaultWheelTimePicker( } Row { //Hour + val hoursTexts = if(timeFormat == TimeFormat.HOUR_24) hours.map { it.text } else amPmHours.map { it.text } WheelTextPicker( size = DpSize( width = size.width / if(timeFormat == TimeFormat.HOUR_24) 2 else 3, height = size.height ), - texts = if(timeFormat == TimeFormat.HOUR_24) hours.map { it.text } else amPmHours.map { it.text }, + texts = hoursTexts, + contentDescriptions = hoursTexts.map { "$it:00" }, rowCount = rowCount, style = textStyle, color = textColor, @@ -153,6 +155,7 @@ internal fun DefaultWheelTimePicker( height = size.height ), texts = minutes.map { it.text }, + contentDescriptions = minutes.map { "${it.text}min" }, rowCount = rowCount, style = textStyle, color = textColor, diff --git a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/WheelTextPicker.kt b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/WheelTextPicker.kt index ffd57bf..d9f72a8 100644 --- a/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/WheelTextPicker.kt +++ b/wheel-picker-compose/src/main/java/com/commandiron/wheel_picker_compose/core/WheelTextPicker.kt @@ -4,8 +4,15 @@ import androidx.compose.material3.LocalContentColor import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.selected +import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.DpSize import androidx.compose.ui.unit.dp @@ -16,12 +23,14 @@ fun WheelTextPicker( startIndex: Int = 0, size: DpSize = DpSize(128.dp, 128.dp), texts: List, + contentDescriptions: List = emptyList(), rowCount: Int, style: TextStyle = MaterialTheme.typography.titleMedium, color: Color = LocalContentColor.current, selectorProperties: SelectorProperties = WheelPickerDefaults.selectorProperties(), onScrollFinished: (snappedIndex: Int) -> Int? = { null }, ) { + var snappedIndex by remember { mutableStateOf(startIndex) } WheelPicker( modifier = modifier, startIndex = startIndex, @@ -29,9 +38,16 @@ fun WheelTextPicker( count = texts.size, rowCount = rowCount, selectorProperties = selectorProperties, - onScrollFinished = onScrollFinished + onScrollFinished = { + snappedIndex = it + onScrollFinished(it) + } ){ index -> Text( + modifier = Modifier.semantics { + selected = snappedIndex == index + contentDescription = contentDescriptions.getOrElse(index) { texts[index] } + }, text = texts[index], style = style, color = color,