2017-01-24 15 views
1

Я использую библиотеку Material Calendar View, чтобы показать конкретный месяц. Для получения этой функции я использовал setMinimumDate() и setMaximumDate().Заголовок календаря Android показывает неправильный месяц-год в материале-календаре

Мой код XML является:

<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="none" 
    app:mcv_calendarMode="month" 
    app:mcv_firstDayOfWeek="saturday"/> 

Java код:

materialCalendarView.state().edit() 
      .setMinimumDate(CalendarDay.from(2016, 1, 1)) // 1st February, 2016 
      .setMaximumDate(CalendarDay.from(2016, 1, 29)) // 29th February, 2016 
      .commit(); 

Здесь календарь должен показать февраля 2016. Он отображает информацию о днях и датах правильно, но заголовок календаря всегда показывает текущий месяц и год (изображение добавлено).

Calendar header shows **January 2017**

Как я могу исправить эту проблему? .......

ответ

2

После долгих исследований я получил решение от их (раздел в Заголовок) documentation.

Мой onCreateView() метод приведены ниже:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_calendar_view, container, false); 

    materialCalendarView = (MaterialCalendarView) view.findViewById(R.id.calendarView); 

    final Calendar firstDate=Calendar.getInstance(); 
    firstDate.set(2016, 1, 1, 0, 0, 0); // 1st February, 2016 
    Calendar lastDate=Calendar.getInstance(); 
    lastDate.set(2016, 1, 29, 0, 0, 0); // 29th February, 2016 

    materialCalendarView.state().edit() 
      .setMinimumDate(firstDate) // 1st February, 2016 
      .setMaximumDate(lastDate) // 29th February, 2016 
      .commit(); 

    materialCalendarView.setTitleFormatter(new TitleFormatter() { 
     @Override 
     public CharSequence format(CalendarDay day) { 

      SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM yyyy", Locale.US); //"February 2016" format 

      String monthAndYear = simpleDateFormat.format(firstDate.getTime()); 

      return monthAndYear; 
     } 
    }); 


    materialCalendarView.setOnDateChangedListener(this); 
    materialCalendarView.setOnMonthChangedListener(this); 

    return view; 
} 

Я не уверен, что это лучшая практика или нет, но решить мою проблему. Если есть другой хороший подход для решения этой проблемы, пожалуйста, дайте свое решение.

-1

там документации они сказали, что они не гарантирую, что модификация сохранит ... под заголовком значительные изменения 1.4. 0

+0

так? Что мне теперь делать? –

+0

В документации они сказали, что они не гарантируют, что изменение сохранится ... при значительном изменении 1.4.0 – Harmantj

+0

Не могли бы вы разместить ссылку на документацию для получения ссылки на OP? – RBT

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

  • Нет связанных вопросов^_^