在日历中突出显示多个选定的日期

时间:2020-01-05 10:48:19

标签: android android-studio

我想突出显示多个选定的日期,例如缺席(红色),礼物(绿色)和假期(蓝色)。我展示了许多站点或github或stackoverflow答案,但找不到完美的解决方案。 还要设置最小和最大日期以显示日历。

我的问题就像this link example,但找不到解决方案。

请帮助我找到完美的解决方案。

2 个答案:

答案 0 :(得分:0)

Follow this link to get the library mCalendarView

1。使用第三方库McalenderView。

2。添加到您的gradle:-

'sun.bob:mcalendarview:1.0.0'

尝试以下代码:-

3。一些代码:-

calendarView = ((MCalendarView) view.findViewById(R.id.calendar_exp));

    ArrayList<DateData> dates=new ArrayList<>();
    dates.add(new DateData(2018,04,26));
    dates.add(new DateData(2018,04,27));

    for(int i=0;i<dates.size();i++) {
        calendarView.markDate(dates.get(i).getYear(),dates.get(i).getMonth(),dates.get(i).getDay());//mark multiple dates with this code.
    }


    Log.d("marked dates:-",""+calendarView.getMarkedDates());//get all marked dates.

答案 1 :(得分:0)

尝试使用这些库:

dependencies {
implemantation 'com.savvi.datepicker:rangepicker:1.3.0'
}

内部布局:

 <com.savvi.rangedatepicker.CalendarPickerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/calendar_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scrollbarStyle="outsideOverlay"
    android:clipToPadding="false"
    app:tsquare_orientation_horizontal="false"
    app:tsquare_dividerColor="@color/transparent"
    app:tsquare_headerTextColor="@color/custom_header_text"
    /> 

在Java类中将其初始化

   calendar.init(lastYear.getTime(), nextYear.getTime()) //
            .inMode(CalendarPickerView.SelectionMode.RANGE)
            .withSelectedDate(new Date())
 // deactivates given dates, non selectable
            .withDeactivateDates(list)
 // highlight dates in red color, mean they are aleady used.
            .withHighlightedDates(arrayList)
// add subtitles to the dates pass a arrayList of SubTitle objects with date and text
            .withSubtitles(getSubtitle())

更多:https://github.com/savvisingh/DateRangePicker