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:
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!
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.
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:
De plus, à partir du niveau API 21, il existe un nouveau thème DatePicker
Matériau qui ressemble à ce qui suit:
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.
Depuis l’API 11 en natif: CalendarView
Cette vue est dans HoloEverywhere depuis API 7.
ce que j'ai trouvé jusqu'à présent:
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
J'ai récemment écrit exactement cela comme une application modulaire. Voici quelques exemples de code , documentation avec screenshots et .apk download .
Essayez d’utiliser ce composant: https://github.com/truefedex/Android-date-picker
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);
vous pouvez utiliser cette bibliothèque pour la sélection de date