android 在Jetpack Compose中使用DatePicker的问题

4zcjmb1e  于 2024-01-04  发布在  Android
关注(0)|答案(1)|浏览(188)

我正在用Kotlin和Jetpack Compose制作一个Android应用程序。我目前被制作一个DatePicker卡住了。目标是让日期选择器日历出现在应用程序屏幕本身,而不是作为一个对话框。但是,一旦我尝试在较小的手机上运行该应用程序,日历就会与上面的日期重叠,并且它们不可见。
下面是日期选择器的代码:

  1. Column(
  2. modifier = Modifier
  3. .fillMaxWidth()
  4. .padding(8.dp),
  5. horizontalAlignment = Alignment.CenterHorizontally
  6. )
  7. {
  8. DatePicker(
  9. state = datePickerState,
  10. showModeToggle = false,
  11. modifier = modifier,
  12. title = null,
  13. )
  14. }

字符串
当我调用日期选择器的可组合函数时,我这样调用它:

  1. DatePickerView(
  2. selectedDate,
  3. onDateSelected = {
  4. selectedDate = it
  5. formattedDate = convertMillisToDate(it)
  6. },
  7. modifier = Modifier
  8. .fillMaxWidth()
  9. .padding(horizontal = 16.dp)
  10. .align(Alignment.CenterHorizontally)
  11. )


在大屏幕上一切都很好,但在小屏幕上这个问题来了。我如何动态调整日期选择器,基于屏幕大小?

6gpjuf90

6gpjuf901#

要根据Jetpack Compose应用程序中的屏幕大小动态调整DatePicker的大小,您可以使用LocalConfiguration和LocalDensity提供程序来获取有关屏幕大小和密度的信息。然后,您可以相应地调整DatePicker的大小。

  1. @Composable
  2. fun DatePickerScreen() {
  3. val configuration = LocalConfiguration.current
  4. val screenWidthDp = configuration.screenWidthDp
  5. val datePickerWidth = (screenWidthDp * 0.8).dp
  6. Column(
  7. modifier = Modifier
  8. .fillMaxWidth()
  9. .padding(8.dp),
  10. horizontalAlignment = Alignment.CenterHorizontally
  11. ) {
  12. DatePickerView(
  13. selectedDate = System.currentTimeMillis(),
  14. onDateSelected = { /* Handle date selection */ },
  15. modifier = Modifier
  16. .fillMaxWidth()
  17. .padding(horizontal = 16.dp)
  18. .align(Alignment.CenterHorizontally)
  19. .width(datePickerWidth)
  20. )
  21. }
  22. }
  23. @Composable
  24. fun DatePickerView(
  25. selectedDate: Long,
  26. onDateSelected: (Long) -> Unit,
  27. modifier: Modifier = Modifier
  28. ) {
  29. val datePickerState = rememberDatePickerState(selectedDate)
  30. DatePicker(
  31. state = datePickerState,
  32. showModeToggle = false,
  33. modifier = modifier,
  34. title = null,
  35. )
  36. }

字符串

展开查看全部

相关问题