水平滚动日历视图

Horizontal scrollable calendar view

我想创建如下图所示的可水平滚动的日历视图。

我有一些第三方库可以创建日历视图,但所有这些都只支持普通日历。我想要水平滚动的最小化日历版本,并在点击日期时更新内容。

你可以试试这个很棒的https://github.com/Mulham-Raee/Horizontal-Calendar,它有你需要的一切。

这是一个使用示例

首先将此添加到您的 xml 文件

<devs.mulham.horizontalcalendar.HorizontalCalendarView
                        android:id="@+id/calendarView"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:background="#FAFAFA"
                        app:selectedDateBackground="#00ffffff"
                        app:selectorColor="#c62828"
                        app:textColorNormal="#bababa"
                        app:textColorSelected="@color/blue_color"
                        app:textSizeDayName="20sp"
                        app:textSizeDayNumber="20sp" />

然后是你的activity声明一个HorizontalCalendar

的实例
private HorizontalCalendar horizontalCalendar;

最终 java 代码

Calendar endDate = Calendar.getInstance();
    endDate.add(Calendar.MONTH, 1);
    Calendar startDate = Calendar.getInstance();
    startDate.add(Calendar.MONTH, -1);

    horizontalCalendar = new HorizontalCalendar.Builder(root, R.id.calendarView)
            .startDate(startDate.getTime())
            .endDate(endDate.getTime())
            .datesNumberOnScreen(5)
            .dayNameFormat("EEE")
            .dayNumberFormat("dd")
            .monthFormat("MMM")
            .textSize(14f, 24f, 14f)
            .showDayName(true)
            .showMonthName(true)

            .build();

    horizontalCalendar.setCalendarListener(new HorizontalCalendarListener() {
        @Override
        public void onDateSelected(Date date, int position) {
       //Toast.makeText(getContext(), DateFormat.getDateInstance().format(date) + " is selected!", Toast.LENGTH_SHORT).show();
        }

      });

这是旧的 post 但我想分享我的发现

这个库提供了很好的定制,是用 Kotlin 编写的,支持 SDK >=21

SingleRowCalendar GitHub

并查看 this Medium post 以获得分步指南。

这里有一些您可以轻松制作的示例 UI