Android Calendar View для выбора даты - PullRequest
32 голосов
/ 15 сентября 2010

Я пишу свое первое приложение, и у меня есть вопрос о DatePicker.

Мое приложение требует, чтобы пользователь ввел дату.Наиболее удобный способ - открыть виджет, похожий на календарь, который отображает текущий месяц в виде календарной сетки - что-то вроде этого:

enter image description here

Я хочу использовать это вместо интерфейса DatePicker - в котором есть поля «Месяц», «День» и «Год», каждое с кнопками «вверх» и «вниз» для увеличения / уменьшения.

Встроен ли этот тип функциональности в любой виджет или вид Android, илия должен был бы разработать свой собственный компонент для этого?Я полагал, что это уже существует, видя, как часто этот тип пользовательского интерфейса используется в немобильных приложениях и веб-страницах.

Спасибо!

Ответы [ 8 ]

18 голосов
/ 05 марта 2014

Теперь, в 2014 году, даже нативный DatePicker (ссылка) содержит маленький голографический вид CalendarView (ссылка) , чтобы выбрать день в месяце.

Вы можете выбрать, отображаются ли оба счетчика и CalendarView или только один из них, установив:

  • android:calendarViewShown
  • android:spinnersShown

Я не уверен, что это просто API уровня 16+ или даже в Ice Cream Sandwich, но он есть. Вот как это выглядит по умолчанию:

enter image description here


Более того, на уровне API 21 и выше появился новый материал с темой DatePicker, который выглядит следующим образом:

enter image description here

Это значение по умолчанию для API 21+, и спиннеров больше нет, но вы можете переключиться обратно на Holo, установив

android:datePickerMode="spinner"

в вашем XML.

12 голосов
/ 30 июля 2012

Поскольку API 11 существует изначально: CalendarView

enter image description here

Это представление находится в HoloEverywhere начиная с API 7.

11 голосов
/ 15 сентября 2010

Встроен ли этот тип функциональности в какой-либо виджет или представление Android, или для этого мне нужно создать собственный настраиваемый> компонент?

Для этого нет компонентаAndroid SDK, извините.Виджет, который вы иллюстрируете, слишком мал для сенсорного экрана.Вы можете реализовать что-то большее (см. Приложение «Календарь»), но для этого вы в значительной степени сами по себе.

7 голосов
/ 26 марта 2011
4 голосов
/ 31 мая 2012

Найдена хорошая реализация в 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

4 голосов
/ 10 декабря 2010

Я недавно написал именно это как модульное приложение.Вот пример примера кода , документации с скриншотами и .apk .

1 голос
/ 07 сентября 2015

Попробуйте использовать этот компонент: https://github.com/truefedex/android-date-picker enter image description here

Если вы хотите использовать его как всплывающее окно, напишите на своем клике:

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);
0 голосов
/ 17 февраля 2016

вы можете использовать эту библиотеку для выбора даты

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

...