Подтвердить что ты не робот

Android Calendar View для Date Picker

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

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

enter image description here

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

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

Спасибо!

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

  • android:calendarViewShown
  • android:spinnersShown

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

enter image description here


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

enter image description here

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

android:datePickerMode="spinner"

в вашем XML.

Ответ 3

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

enter image description here

Этот вид находится в HoloEverywhere, поскольку API 7.

Ответ 7

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

Если вы хотите использовать его, как popup, напишите на вашем 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);