2010-09-13 23 views
12

Soy bastante nuevo en el desarrollo de Android y estoy buscando un medio para incluir el calendario en mi aplicación de Android, pero me estoy quedando bastante mal cuando busco en Google.Vista de calendario de Android

  1. ¿Hay alguna forma de utilizar un tipo de calendario predeterminado en mi aplicación? (Sería ideal ya que la interfaz de usuario sería familiar)

  2. Al fallar en una opción incorporada, ¿hay alguna buena biblioteca con un control de calendario que pueda usar?

No estoy buscando para sincronizar y todo eso (al menos, en este punto), sólo busca tener una vista de calendario que puedo mostrar información al usuario.

Respuesta

7

AFAIK, no hay otra manera que implementar su propio calendario. Entonces ... lo que tendría que hacer es usar un GridLayout con 7 columnas y crear un BaseAdapter personalizado para mostrar los datos correctamente.

2

es posible pero no es fácil. http://jimblackler.net/blog/?p=151&cpage=2#comment-52767

y

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); 

} 

una búsqueda rápida en contenido: //com.android.calendar/calendars ayudará a comenzar. pero aún no he terminado el mío, aún no puedo sacar los datos. pero es posible

+0

¿Agregó exitosamente el calendario predeterminado a su aplicación? Por favor hagamelo saber. Necesito ayuda con esto. Gracias –

5

Android ahora ofrece tres formas de incorporar calendarios en su aplicación.

  1. Calendar view para las fechas de recogida y más.

  2. Calendar provider se puede acceder para añadir y eliminar eventos del calendario OS.

  3. Calendar intents le permiten proporcionar un calendario sin tener que obtener permisos adicionales o tratar con bases de datos.

+0

Desafortunadamente, esto solo funciona en API11 o posterior. Sería bueno si alguien creó un buen backport para que pueda soportar las versiones 2.x – THelper

31

escribí biblioteca Caldroid (https://github.com/roomorama/Caldroid) que es simple de instalar y tienen muchas características, tales como la configuración min/día como máximo, fechas de movilidad reducida, seleccione el intervalo de fechas, deslizar para cambiar el mes, totalmente localizado, rotación de la ayuda adecuada, etc. . Es fácil personalizar la apariencia. Sólo para compartir si alguien puede encontrar útil :)

+0

hey usé su calendario, y es increíble. pero necesito establecer eventos en la fecha. como si tuviera que personalizar los colores de fecha según el evento que tengan en esa fecha. ¿Me puede dar una pequeña idea de cómo puedo lograr eso? –

+0

Puede proporcionar su propia vista para cada celda según la fecha, puede encontrarla en la documentación https://github.com/roomorama/Caldroid#allow-customized-cell-for-the-dates-gridview Usted puede encontrar cómo usarlo en la muestra también – thomasdao

+0

Me quedé atrapado en este problema, ¿puede verificarlo? https://github.com/roomorama/Caldroid/issues/24 –

9

me trataron android-CalendarView, Caldroid y más tarde cambiado a android-times-square que tiene esta mejoras:

  • Mucho más rápido que cambian a otros meses debido al desplazamiento vertical (sin paginación que responde lenta en Caldroid)
  • Indicadores, fechas resaltadas (al menos en this fork para android)
  • versión de IOS disponible con la misma apariencia
  • se ve más limpio que la versión androide debido meses están claramente separadas

    enter image description here

Al igual que Caldroid es una parte de a productive app.

+0

"Indicadores, fechas resaltadas (al menos en este fork para Android)" - ¿esto también es posible en Caldroid? No estoy seguro de si elegir un caléndro o este, y necesito fechas destacadas ... Gracias. – Filip

1

Puede utilizar MFCalendarView: https://github.com/MustafaFerhan/MFCalendarView

establecidos múltiples eventos;

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

mf.setEvents(eventDays); 

y el mango con detectores del 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) { 
      } 
    }); 

Es muy simple.

2

Esta biblioteca parece muy bonito y con una interfaz de usuario más moderna (Diseño material):

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

sólo hay que importar con Gradle:

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

y añadirlo en su disposición:

<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

+0

Hola Philippe estoy usando la vista anterior del calendario. Todas las cosas funcionan bien, necesito configurar el año del calendario en 1990, ¿cómo puedo hacer esto? ¿Me pueden ayudar? –

Cuestiones relacionadas