日期选择器的 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 日历视图的主要内容,如果未能解决你的问题,请参考以下文章
android有月份选择器吗?或者怎么让日期选择器的日期不显示,只显示年份和月份
Android ------ AndroidPicker(时间,日历,城市等选择器)
Android ------ AndroidPicker(时间,日历,城市等选择器)