Hasan Tunçay
03/15/2024, 1:50 PMjamshedalamqaderi
03/15/2024, 1:50 PMHasan Tunçay
03/15/2024, 1:51 PMjamshedalamqaderi
03/15/2024, 1:51 PMHasan Tunçay
03/15/2024, 1:53 PMHasan Tunçay
03/15/2024, 1:56 PMjamshedalamqaderi
03/15/2024, 1:56 PMMaterialTheme
and then modify the color scheme according to your preferences. Approach it as if you are making these changes at the top root level during the initialization of MaterialTheme. For reference on which color properties are available, you can visit the following link
https://m3.material.io/components/time-pickers/specsjamshedalamqaderi
03/15/2024, 1:57 PMHasan Tunçay
03/15/2024, 1:57 PMjamshedalamqaderi
03/15/2024, 1:58 PMTimePicker(state = timeState, colors = TimePickerDefaults.colors())
Alejandro Rios
03/15/2024, 1:59 PMHasan Tunçay
03/15/2024, 2:00 PMjamshedalamqaderi
03/15/2024, 2:00 PMval timeState = rememberTimePickerState()
MaterialTheme(
colorScheme = lightColorScheme(
primary = Color.Red
)
) {
TimePicker(state = timeState, colors = TimePickerDefaults.colors())
}
Hasan Tunçay
03/15/2024, 2:01 PMtimepicker(
colors = TimePickerDefaults.colors(
activeBackgroundColor = Color.White,
inactiveBackgroundColor = Color.White,
inactiveTextColor = timePickerTextUnselected,
activeTextColor = fontLightColor,
borderColor = Color.Transparent,
inactivePeriodBackground = Color.Transparent,
headerTextColor = Color.Transparent,
selectorColor = backGroundStart,
selectorTextColor = fontLightColor
),
Hasan Tunçay
03/15/2024, 2:02 PM@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun TimePickerDialog(
state: TimePickerState,
onConfirm: () -> Unit,
onCancel: () -> Unit
) {
AlertDialog(
onDismissRequest = { onCancel() },
containerColor = timePickerContainer,
text = {
TimePicker(
state = state,
colors = TimePickerDefaults.colors(
clockDialColor = Color.White,
clockDialSelectedContentColor = fontLightColor,
clockDialUnselectedContentColor = timePickerTextUnselected,
selectorColor = backGroundStart,
containerColor = Color.Yellow,
periodSelectorBorderColor = Color.Transparent,
periodSelectorSelectedContainerColor = Color.White,
periodSelectorUnselectedContainerColor = Color.White,
periodSelectorSelectedContentColor = timePickerTextUnselected,
periodSelectorUnselectedContentColor = Color.White,
timeSelectorSelectedContainerColor = Color.White,
timeSelectorUnselectedContainerColor = Color.White,
timeSelectorSelectedContentColor = fontLightColor,
timeSelectorUnselectedContentColor = timePickerTextUnselected
)
)
},
confirmButton = {
confirmButton() { onConfirm() }
}
)
}
jamshedalamqaderi
03/15/2024, 2:02 PMjamshedalamqaderi
03/15/2024, 2:03 PMval timeState = rememberTimePickerState()
MaterialTheme(
colorScheme = lightColorScheme(
primary = Color.Red
)
) {
TimePicker(state = timeState, colors = TimePickerDefaults.colors())
}
You have to change the colors like this if you want full customizationjamshedalamqaderi
03/15/2024, 2:05 PMHasan Tunçay
03/15/2024, 2:07 PMHasan Tunçay
03/15/2024, 2:08 PMHasan Tunçay
03/15/2024, 2:08 PMjamshedalamqaderi
03/15/2024, 2:08 PMHasan Tunçay
03/15/2024, 2:09 PMExperimentalMaterial3Api
@Stable
object TimePickerDefaults {
/**
* Default colors used by a [TimePicker] in different states
*
* @param clockDialColor The color of the clock dial.
* @param clockDialSelectedContentColor the color of the numbers of the clock dial when they
* are selected or overlapping with the selector
* @param clockDialUnselectedContentColor the color of the numbers of the clock dial when they
* are unselected
* @param selectorColor The color of the clock dial selector.
* @param containerColor The container color of the time picker.
* @param periodSelectorBorderColor the color used for the border of the AM/PM toggle.
* @param periodSelectorSelectedContainerColor the color used for the selected container of
* the AM/PM toggle
* @param periodSelectorUnselectedContainerColor the color used for the unselected container
* of the AM/PM toggle
* @param periodSelectorSelectedContentColor color used for the selected content of
* the AM/PM toggle
* @param periodSelectorUnselectedContentColor color used for the unselected content
* of the AM/PM toggle
* @param timeSelectorSelectedContainerColor color used for the selected container of the
* display buttons to switch between hour and minutes
* @param timeSelectorUnselectedContainerColor color used for the unselected container of the
* display buttons to switch between hour and minutes
* @param timeSelectorSelectedContentColor color used for the selected content of the display
* buttons to switch between hour and minutes
* @param timeSelectorUnselectedContentColor color used for the unselected content of the
* display buttons to switch between hour and minutes
*/
@Composable
fun colors(
clockDialColor: Color = ClockDialColor.toColor(),
clockDialSelectedContentColor: Color = ClockDialSelectedLabelTextColor.toColor(),
clockDialUnselectedContentColor: Color = ClockDialUnselectedLabelTextColor.toColor(),
selectorColor: Color = ClockDialSelectorHandleContainerColor.toColor(),
containerColor: Color = ContainerColor.toColor(),
periodSelectorBorderColor: Color = PeriodSelectorOutlineColor.toColor(),
periodSelectorSelectedContainerColor: Color =
PeriodSelectorSelectedContainerColor.toColor(),
periodSelectorUnselectedContainerColor: Color = Color.Transparent,
periodSelectorSelectedContentColor: Color =
PeriodSelectorSelectedLabelTextColor.toColor(),
periodSelectorUnselectedContentColor: Color =
PeriodSelectorUnselectedLabelTextColor.toColor(),
timeSelectorSelectedContainerColor: Color =
TimeSelectorSelectedContainerColor.toColor(),
timeSelectorUnselectedContainerColor: Color =
TimeSelectorUnselectedContainerColor.toColor(),
timeSelectorSelectedContentColor: Color =
TimeSelectorSelectedLabelTextColor.toColor(),
timeSelectorUnselectedContentColor: Color =
TimeSelectorUnselectedLabelTextColor.toColor(),
) = TimePickerColors(
clockDialColor = clockDialColor,
clockDialSelectedContentColor = clockDialSelectedContentColor,
clockDialUnselectedContentColor = clockDialUnselectedContentColor,
selectorColor = selectorColor,
containerColor = containerColor,
periodSelectorBorderColor = periodSelectorBorderColor,
periodSelectorSelectedContainerColor = periodSelectorSelectedContainerColor,
periodSelectorUnselectedContainerColor = periodSelectorUnselectedContainerColor,
periodSelectorSelectedContentColor = periodSelectorSelectedContentColor,
periodSelectorUnselectedContentColor = periodSelectorUnselectedContentColor,
timeSelectorSelectedContainerColor = timeSelectorSelectedContainerColor,
timeSelectorUnselectedContainerColor = timeSelectorUnselectedContainerColor,
timeSelectorSelectedContentColor = timeSelectorSelectedContentColor,
timeSelectorUnselectedContentColor = timeSelectorUnselectedContentColor
)
/** Default layout type, uses the screen dimensions to choose an appropriate layout. */
@ReadOnlyComposable
@Composable
fun layoutType(): TimePickerLayoutType = defaultTimePickerLayoutType
}
Hasan Tunçay
03/15/2024, 2:09 PMCasey Brooks
03/15/2024, 2:16 PMMaterialTheme.colors.onSurface
, so try setting that value in a local MaterialTheme
which wraps only the TimePickerHasan Tunçay
03/15/2024, 2:32 PMCasey Brooks
03/15/2024, 2:38 PMMaterialTheme
. There’s lots of internal properties and things bounce around the code, but it ultimately terminates at a property that’s either directly passed to the Composable or referenced from the MaterialTheme. And since you can provide themes locally as well as globally, you can always find a way to change a color, it just might not be the most intuitive at first.
For example, try something like this:
MaterialTheme { // main app theme, configure how you want
// ... other composable UI code
MaterialTheme( // override theme locally
colors = MaterialTheme.colors.copy(
onSurface = Color.Green // set whatever color you need the separator and related text to be
)
) {
TimePicker(state)
}
}