日期选择器的 Android 日历视图

Posted

技术标签:

【中文标题】日期选择器的 Android 日历视图【英文标题】:Android Calendar View for Date Picker 【发布时间】:2011-04-12 09:07:09 【问题描述】:

我正在编写我的第一个应用程序,我有一个关于 DatePicker 的问题。

我的应用要求用户输入日期。最用户友好的方式是弹出一个类似日历的小部件,该小部件像日历网格一样显示当前月份 - 如下所示:

我想用它来代替 DatePicker 界面 - 它有月、日和年字段,每个字段都有一个向上和向下按钮来增加/减少。

这种类型的功能是否内置在任何 android 小部件或视图中,还是我必须设计自己的自定义组件才能做到这一点?我想这已经存在了,看看这种类型的 UI 在非移动应用程序和网页中的使用如此频繁。

谢谢!

【问题讨论】:

能否更新此问题的选定答案?如果人们不查看所有答案,他们可能会被误导。正如其他人的回复所述,API 级别 11+ 中有一个 CalendarView。谢谢! 【参考方案1】:

现在,在 2014 年,即使是原生 DatePicker (link) 也包含小 Holo,看着 CalendarView (link) 在一个月中选择一天。

您可以通过设置选择是否同时显示微调器和CalendarView 或仅显示其中一个:

android:calendarViewShown android:spinnersShown

我不确定它是否只是 API 级别 16+,或者是否甚至在冰淇淋三明治中,但它就在那里。默认情况下是这样的:


此外,在 API 级别 21 及更高级别上,有一个新的 Material 主题 DatePicker,如下所示:

这是 API 21+ 的默认设置,不再有微调器,但您可以通过设置切换回 Holo

android:datePickerMode="spinner"

在您的 XML 中。

【讨论】:

在 ICS 上试了一下,看起来像全息【参考方案2】:

由于 API 11 原生:CalendarView

自 API 7 起,此视图位于 HoloEverywhere 中。

【讨论】:

【参考方案3】:

这种类型的功能是否内置在任何 android 小部件或视图中,还是我必须设计自己的自定义 > 组件才能做到这一点?

Android SDK 中没有相应的组件,抱歉。您说明的小部件对于触摸屏来说太小了。您可以实现更大的东西(请参阅日历应用程序),但您在很大程度上要靠自己。

【讨论】:

您能否提供您在回答中提到的日历应用程序的链接..【参考方案4】:

到目前为止我发现了什么:

http://code.google.com/p/android-calendar-view http://code.google.com/p/openintents/wiki/CalendarPickerAPI

【讨论】:

如何正确调整这些日历的大小?【参考方案5】:

我最近将其完全写成了一个模块化应用程序。这里有一些sample code、documentation 和screenshots 和.apk download。

【讨论】:

你能告诉我如何实现日历插件吗?没有关于如何安装它的信息【参考方案6】:

在http://caughtinthemobileweb.wordpress.com/2011/06/20/how-to-implement-calendarview-in-android/ 中找到了一个很好的实现


此外,自 API 级别 11 (Android 3.0) 以来,CalendarView http://developer.android.com/reference/android/widget/CalendarView.html 的本机实现已经存在

【讨论】:

+1 用于提及本地日期选择器。还有 DatePickerDialog:developer.android.com/reference/android/app/… 这里是没有网格视图的伟大重写:github.com/AtRow/CalendarView【参考方案7】:

尝试使用这个组件: https://github.com/truefedex/android-date-picker

如果您想像弹出窗口一样使用它,请在 onclick 上写:

if (calendarPopup == null) 
  calendarPopup = new PopupWindow(getContext());
  CalendarPickerView calendarView = new CalendarPickerView(getContext());
  CalendarNumbersView calendar = (CalendarNumbersView) calendarView.findViewById(com.phlox.datepick.R.id.calendar);
  calendar.setShowDayNames(false);
  calendarView.setListener(onDateSelectionListener);
  calendarPopup.setContentView(calendarView);
  calendarPopup.setWindowLayoutMode(
        MeasureSpec.makeMeasureSpec(llCalendar.getWidth(), MeasureSpec.EXACTLY),
        ViewGroup.LayoutParams.WRAP_CONTENT);
  calendarPopup.setHeight(1);
  calendarPopup.setWidth(llCalendar.getWidth());
  calendarPopup.setOutsideTouchable(true);

calendarPopup.showAsDropDown(llCalendar);

【讨论】:

【参考方案8】:

你可以使用这个库来选择日期

https://github.com/square/android-times-square/

【讨论】:

以上是关于日期选择器的 Android 日历视图的主要内容,如果未能解决你的问题,请参考以下文章

Excel中进行插入日期选择器的操作技巧

android有月份选择器吗?或者怎么让日期选择器的日期不显示,只显示年份和月份

Android ------ AndroidPicker(时间,日历,城市等选择器)

Android ------ AndroidPicker(时间,日历,城市等选择器)

Android ------ AndroidPicker(时间,日历,城市等选择器)

Android ------ AndroidPicker(时间,日历,城市等选择器)