【问题标题】:How to change DatePicker Dialog color in jetpack compose?如何更改 Jetpack Compose 中的 DatePicker 对话框颜色?
【发布时间】:2023-02-08 03:30:41
【问题描述】:

我想更改 datePicker 对话框的颜色,但我不知道该怎么做。我找到了关于这个但不是 jetpack compose 你能帮我吗?这是我的 DatePicker 对话框代码

val context = LocalContext.current

 val year: Int
    val month: Int
    val day: Int
    val calendar = Calendar.getInstance()

    year = calendar.get(Calendar.YEAR)
    month = calendar.get(Calendar.MONTH)
    day = calendar.get(Calendar.DAY_OF_MONTH)

 val datePickerDialog = DatePickerDialog(
        context,
        { _: DatePicker, year: Int, month: Int, dayOfMonth: Int ->
            onDateChange("$dayOfMonth/${month + 1}/$year", day, month, year)
        }, year, month, day
    )

 CustomInputField(
                isFocused = isInputFocused,
                placeholder = "Your Birty Day ",
                currentValue = state.date,
                onClick = {
                    onPickerStateChange(BirthDayPickerState.BIRTHDAY)
                    datePickerDialog.show()
                }) 

这是我所有的日期选择器对话框代码。我没有分享是因为我认为所有代码都不是必需的,我只是尝试分享必要的代码。让我快速解释一下,我有一个 customInputField。像文本字段一样的 customInputField。当我单击 customInputField 时打开 DatePicker 对话框,我选择用户生日日期并将其显示在 customInputField 中作为用户生日,但我想更改此 DatePicker 对话框,因为我不喜欢它我该怎么做?你对此有什么建议吗?

【问题讨论】:

    标签: android kotlin datepicker android-jetpack-compose


    【解决方案1】:

    您可以在构造函数中应用主题覆盖:

    val datePickerDialog = DatePickerDialog(
        context,
        R.style.ThemeOverlay_MyApp_Dialog,
        { _: DatePicker, year: Int, month: Int, dayOfMonth: Int ->
            mDate.value = "$dayOfMonth/${month + 1}/$year, day, month, year"
        }, year, month, day
    )
    

    主题叠加层在 styles/themes.xml 文件中定义。就像是:

    <style name="ThemeOverlay.MyApp.Dialog" parent="@style/ThemeOverlay.MaterialComponents.Dialog">
        <item name="colorSecondary">@color/red500_light</item>
        <item name="colorPrimary">@color/blu500_dark</item> <!-- button text color -->
    </style>
    

    您还可以使用新的DatePicker在 M3 中(从1.1.0-alpha04 开始)

        val datePickerState = rememberDatePickerState(initialSelectedDateMillis = 1578096000000)
    
        androidx.compose.material3.DatePicker(
            datePickerState = datePickerState,
            modifier = Modifier.padding(16.dp),
            colors = DatePickerDefaults.colors(
                titleContentColor = Blue500,
            )
        )
    
        Text("Selected date timestamp: ${datePickerState.selectedDateMillis ?: "no selection"}")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-28
      • 2023-01-31
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-20
      相关资源
      最近更新 更多