web-dev-qa-db-fra.com

Android Calendar View pour Date Picker

J'écris ma première application et j'ai une question à propos de DatePicker.

Mon application nécessite que l'utilisateur entre une date. La manière la plus conviviale serait de faire apparaître un widget de type calendrier affichant le mois en cours comme une grille de calendrier - quelque chose comme ceci:

enter image description here

Je veux utiliser cela à la place de l'interface DatePicker - qui comporte des champs Mois, Jour et Année, chacun avec un bouton haut/bas pour incrémenter/décrémenter.

Ce type de fonctionnalité est-il intégré à un widget ou à une vue Android, ou devrais-je concevoir mon propre composant personnalisé pour le faire? J'ai pensé que cela existerait déjà, en voyant à quel point ce type d'interface utilisateur est utilisé si fréquemment dans les applications et les pages Web non mobiles.

Merci!

31
ndtrek07

Ce type de fonctionnalité est-il intégré à un widget ou à une vue Android, ou devrais-je concevoir mon> composant personnalisé pour le faire?

Désolé, il n’ya pas de composant pour cela dans le SDK Android. Le widget que vous illustrez est trop petit pour un écran tactile. Vous pouvez implémenter quelque chose de plus grand (voir l'application Calendrier), mais vous êtes largement autonome pour cela.

11
CommonsWare

Maintenant, en 2014, même le DatePicker (lien) natif contient un petit Holo qui ressemble à CalendarView (lien) pour choisir un jour dans le mois.

Vous pouvez choisir si les deux filateurs et CalendarView ou si un seul d'entre eux est affiché en réglant:

  • Android:calendarViewShown
  • Android:spinnersShown

Je ne sais pas si c'est juste le niveau API 16+ ou s'il s'agit même d'un sandwich à la crème glacée, mais c'est là. Voici à quoi cela ressemble par défaut:

enter image description here


De plus, à partir du niveau API 21, il existe un nouveau thème DatePicker Matériau qui ressemble à ce qui suit:

enter image description here

Il s’agit par défaut de l’API 21+ et il n’ya plus de fileurs, mais vous pouvez revenir à celui de Holo en définissant 

Android:datePickerMode="spinner"

dans votre XML.

17
Marcel Bro

Depuis l’API 11 en natif: CalendarView

enter image description here

Cette vue est dans HoloEverywhere depuis API 7.

12
Brais Gabin
7
oae

Trouvé une bonne implémentation dans http://caughtinthemobileweb.wordpress.com/2011/06/20/how-to-implement-calendarview-in-Android/


De plus, depuis le niveau 11 de l'API (Android 3.0), il existe une implémentation native de CalendarView http://developer.Android.com/reference/Android/widget/CalendarView.html

4
Gaurav Vashisth

J'ai récemment écrit exactement cela comme une application modulaire. Voici quelques exemples de code , documentation avec screenshots et .apk download .

4
kostmo

Essayez d’utiliser ce composant: https://github.com/truefedex/Android-date-picker enter image description here

Si vous voulez l'utiliser comme un popup écrivez sur votre 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);
1
Fedir Tsapana

vous pouvez utiliser cette bibliothèque pour la sélection de date

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

0
Chayon Ahmed