2015-12-01 2 views
-1

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

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<CalendarView 
    android:id="@+id/calendar_userCalendar" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:clickable="true" /> 

</RelativeLayout> 

С этим я могу увидеть календарь, как это:

enter image description here

И все месяцы видели! Я пытался фильтровать текущий месяц программным образом:

calendar = (CalendarView) inflatedLayout.findViewById(R.id.calendar_userCalendar); 

Calendar cal = Calendar.getInstance(); 
int daysInMonth = cal.getActualMaximum(Calendar.DAY_OF_MONTH); 
calendar.setMaxDate(daysInMonth); 

Но это все еще показывает все месяцы ... Как я могу установить календарь, чтобы показать только текущий месяц и фильтр событий этого месяца?

ответ

1

Вы должны получить начальную и конечную дату месяца, а затем установить его на свой календарь объекта для отображения

public Pair<Date, Date> getDateRange() { 
    Date begining, end; 

    { 
     Calendar calendar = getCalendarForNow(); 
     calendar.set(Calendar.DAY_OF_MONTH, 
       calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); 
     setTimeToBeginningOfDay(calendar); 
     begining = calendar.getTime(); 
    } 

    { 
     Calendar calendar = getCalendarForNow(); 
     calendar.set(Calendar.DAY_OF_MONTH, 
       calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); 
     setTimeToEndofDay(calendar); 
     end = calendar.getTime(); 
    } 

    return Pair.create(begining, end); 
} 

private static Calendar getCalendarForNow() { 
    Calendar calendar = GregorianCalendar.getInstance(); 
    calendar.setTime(new Date()); 
    return calendar; 
} 

private static void setTimeToBeginningOfDay(Calendar calendar) { 
    calendar.set(Calendar.HOUR_OF_DAY, 0); 
    calendar.set(Calendar.MINUTE, 0); 
    calendar.set(Calendar.SECOND, 0); 
    calendar.set(Calendar.MILLISECOND, 0); 
} 

private static void setTimeToEndofDay(Calendar calendar) { 
    calendar.set(Calendar.HOUR_OF_DAY, 23); 
    calendar.set(Calendar.MINUTE, 59); 
    calendar.set(Calendar.SECOND, 59); 
    calendar.set(Calendar.MILLISECOND, 999); 
} 

Вы можете получить начальную и конечную дату месяца, используя код выше] и то вы можете установить начальную и конечную дату месяца для предварительного просмотра

+0

Это сделало трюк! Благодаря! – Sonhja

Смежные вопросы