web-dev-qa-db-fra.com

Affichage du calendrier Android

Je suis assez nouveau dans le développement Android et je cherche un moyen d’inclure le calendrier dans mon application Android, mais j’ai mal fait de mal en googlant.

  1. Est-il possible d’utiliser un type de vue de calendrier par défaut dans mon application? (serait idéal puisque l'interface utilisateur serait familier)

  2. À défaut d'une option intégrée, existe-t-il de bonnes bibliothèques avec un contrôle de calendrier que je pourrais utiliser?

Je ne cherche pas à synchroniser et tout ça (du moins, à ce stade), je cherche seulement à avoir une vue de calendrier pour que je puisse afficher des informations à l'utilisateur.

12
Brian

J'ai écrit la bibliothèque Caldroid ( https://github.com/roomorama/Caldroid ) qui est simple à installer et possède de nombreuses fonctionnalités telles que la date d'installation min/max, les dates désactivées, la plage de dates sélectionnée, le balayage pour changer de mois entièrement localisé, prend en charge correctement la rotation, etc. Il est facile de personnaliser l'aspect et la convivialité. Juste pour partager si quelqu'un trouve cela utile :)

32
thomasdao

J'ai essayé Android-CalendarView , Caldroid et plus tard, je suis passé àAndroid-times-squarequi présente les améliorations suivantes:

  • Passage beaucoup plus rapide aux autres mois en raison du défilement vertical (pas de pagination qui répond lentement en Caldroid)
  • Indicateurs, dates en surbrillance (au moins dans this fork pour Android)
  • version iOS disponible avec le même aspect
  • semble plus propre que la version Android, car les mois sont clairement séparés

    enter image description here

Tout comme Caldroid, il fait partie de une application productive .

9
OneWorld

À ma connaissance, il n’ya pas d’autre moyen que d’implémenter votre propre calendrier. Alors ... vous devez utiliser une GridLayout à 7 colonnes et créer une BaseAdapter personnalisée pour afficher les données correctement.

7
Cristian

Android propose désormais trois méthodes pour intégrer des calendriers à votre application.

  1. Affichage du calendrier pour choisir les dates et autres.

  2. Fournisseur de calendrier peut être utilisé pour ajouter et supprimer des événements du calendrier du système d'exploitation.

  3. Intentions de calendrier vous permettent de fournir un calendrier sans avoir à obtenir d’autorisations supplémentaires ni à gérer des bases de données.

6
Simon Si

c'est possible mais pas facile. http://jimblackler.net/blog/?p=151&cpage=2#comment-52767

et

private void InsertAppointment(String strTitle, String strDescription, String strEventLocation, long StartDateTime, long EndDateTime, boolean bAllDay, boolean bHasAlarm){
    int tAllday;
    int tHasAlarm;
    if (bAllDay = true){
        tAllday = 1;
    }
    else
        tAllday = 0;
    if (bHasAlarm = true){
        tHasAlarm = 1;
    }
    else
        tHasAlarm = 0;

    ContentValues event = new ContentValues();
    // Calendar in which you want to add Evenet
    event.put("calendar_id", CalId);                //CalId                                  
    event.put("title", strTitle);                                                           
    event.put("description", strDescription);                                  
    event.put("eventLocation", strEventLocation);                                                   
    event.put("dtstart", StartDateTime);                                                          
    event.put("dtend", EndDateTime );                  
    event.put("allDay", 0);                     
    event.put("hasAlarm", 0);                                                                  
    Uri eventsUri = Uri.parse("content://com.Android.calendar/events");    
    // event is added
    getContentResolver().insert(eventsUri, event);

}

une recherche rapide sur content://com.Android.calendar/calendars vous aidera à démarrer. mais je n'ai pas encore fini le mien, je ne peux tout simplement pas obtenir les données. mais c'est possible

2
John

Cette bibliothèque semble vraiment agréable et avec une interface utilisateur plus moderne (conception matérielle):

https://github.com/prolificinteractive/material-calendarview

Il vous suffit de l'importer avec gradle:

compile 'com.prolificinteractive:material-calendarview:1.4.0'

Et ajoutez-le dans votre mise en page:

<com.prolificinteractive.materialcalendarview.MaterialCalendarView
xmlns:app="http://schemas.Android.com/apk/res-auto"
Android:id="@+id/calendarView"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
app:mcv_showOtherDates="all"
app:mcv_selectionColor="#00F"
/>

 enter image description here

2
Philippe

Vous pouvez utiliser le sélecteur de calendrier Android que j'ai créé, il s'agit d'un projet open source que vous pouvez facilement ajouter à votre projet.

https://github.com/sancarbar/Android-Calendar-Picker

1
Santiago Carrillo

Vous pouvez utiliser MFCalendarView: https://github.com/MustafaFerhan/MFCalendarView

définir plusieurs événements;

ArrayList<String> eventDays = new ArrayList<String>();
eventDays.add("2014-02-25");
eventDays.add(Util.getCurrentDate());

mf.setEvents(eventDays);

et gérer avec l'auditeur de MFCalendarView:

mf = (MFCalendarView) findViewById(R.id.mFCalendarView);
mf.setOnCalendarViewListener(new onMFCalendarViewListener() {

    @Override
        public void onDisplayedMonthChanged(int month, int year, String monthStr) {
            }

            @Override
            public void onDateChanged(String date) {
            }
    });

C'est très simple.

1
Mustafa Ferhan