2017-01-24 5 views
1

Ich verwende Material Calendar View Bibliothek, um einen bestimmten Monat anzuzeigen. Ich habe setMinimumDate() und setMaximumDate() verwendet, um diese Funktionalität zu erhalten.Android Kalender Kopfzeile zeigt falsche Monat-Jahr in Material-Kalenderansicht

Mein XML-Code ist:

<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-Code:

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

Hier Kalender Februar 2016 zeigen. Es zeigt die Tage und Daten korrekt an, aber der Kalenderkopf zeigt immer aktuellen Monat und Jahr (Bild hinzugefügt).

Calendar header shows **January 2017**

Wie kann ich dieses Problem beheben? .......

Antwort

2

Nach einer langen Suche habe ich eine Lösung von ihrer documentation (in Header Abschnitt).

Meine onCreateView() Verfahren sind unten angegeben:

@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; 
} 

Ich bin nicht sicher, es ist die beste Praxis oder nicht, aber es ist mein Problem gelöst. Wenn es einen anderen guten Ansatz gibt, um dieses Problem zu lösen, geben Sie bitte Ihre Lösung an.

-1

Dort Dokumentation sagten, dass sie sie nicht, dass eine Modifikation gurantee behält ... unter 1.4 große Veränderung geht. 0

+0

so? was sollte ich jetzt tun? –

+0

In der Dokumentation sagten sie, dass sie nicht garantieren, dass die Änderung beibehalten wird ... unter größeren Änderungen 1.4.0 – Harmantj

+0

Können Sie bitte den Link der Dokumentation für die bereit Referenz für das OP veröffentlichen? – RBT