2017-01-23 1 views
2

Ich möchte einen bestimmten Monat auf CardView anzeigen ohne WEITER und VORHERIGER Pfeil, um durch den Kalender zu navigieren. Wenn ich Februar 2010 zeigen möchte, muss Benutzer nur Februar 2010 sehen. Sie können nicht nächsten oder vorherigen Monat gehen.Wie zeigt man nur einen bestimmten Monat in Android CalendarView an?

Ich folgte this Stack Overflow Antwort, um einen bestimmten Monat anzuzeigen, aber es funktioniert nicht für mich. Es zeigt die ganze Zeit das aktuelle Datum und den Monat für meinen Fall an. Ich bin mir nicht sicher, ob es möglich ist oder nicht, NEXT-PREVIOUS Navigation zu deaktivieren.

Meine XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="megaminds.dailyeditorialword.Fragments.CalendarViewFragment"> 

<CalendarView 
    android:id="@+id/calendarViewT" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:firstDayOfWeek="7"> 

</CalendarView> 

onCreateView meiner Fragment-Klasse:

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

    int year = 2010, month = 2, day = 1; 

    CalendarView calendarView = (CalendarView) view.findViewById(R.id.calendarViewT); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(year, month, day); //want to show full month of February 2010 

    calendarView.setMinDate(calendar.getTimeInMillis()); 

    return view; 
} 

Wie ich nur Monat Februar ohne nächste vorherige Navigation zeigen kann?

Antwort

2
Calendar febFirst=Calendar.getInstance(); 

febFirst.set(2017, 1, 1, 0, 0, 0); 

calendar.setMinDate(febFirst.getTimeInMillis()); 

Calendar febLast=Calendar.getInstance(); 

febLast.set(2017, 2, 0, 0, 0, 0); 

calendar.setMaxDate(febLast.getTimeInMillis()); 
calendar.setDate(febFirst.getTimeInMillis()); 

wo calendar ist die CalendarView.

CalendarView, locked to February 2017, on Nexus 5 running Android 6

+0

Vielen Dank. Funktioniert gut. Ein weiteres Problem, Hier markieren immer das 1. Datum des Monats. Kann ich es deaktivieren? Wenn ich den aktuellen Monat zeige, wählt der Datumswähler das aktuelle Datum. Wenn ich einen anderen Monat (nicht den aktuellen Monat) zeige, sollte der Selektor nicht standardmäßig das erste Datum auswählen. Ist es möglich? –

+1

@HasanAbdullah: "hier immer das erste Datum des Monats markieren" - nein, es markiert das Datum, das Sie über 'setDate()' anfordern. "Kann ich es deaktivieren?" - das ist mir nicht bewusst, da der Punkt von "CalendarView" darin besteht, den Benutzer ein Datum auswählen zu lassen. Vielleicht ist die richtige Antwort, wenn Sie nicht "CalendarView" verwenden, sondern [eine Bibliothek verwenden, die mehr in Zeilen mit Ihrem gewünschten Funktionssatz steht] (https://android-arsenal.com/tag/27). – CommonsWare

1
int day = 16; 
int month =8; 
int year =2017; 
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.YEAR, year); 
calendar.set(Calendar.MONTH, month); calendar.set(Calendar.DAY_OF_MONTH, day); 
    long milliTime = calendar.getTimeInMillis(); 
mCalendarView.setDate (milliTime, true, true); 

Hier ist mCalendarView im Android Kalenderansicht

+0

Es zeigt den spezifischen Monat mit NEXT und PREVIOUS-Taste. –

+0

@HasanAbdullah können Sie Android benutzerdefinierte Kalenderansicht für mehr Styling verwenden, können Sie mit nächsten und vorherigen Tasten darauf spielen – Shaahul

Verwandte Themen