水平滑动日历视图

4
我想创建一个水平滚动的日历视图,就像下面的图片一样。 enter image description here 我已经得到了一些第三方库来创建日历视图,但是所有这些都只支持普通日历。我想要一个最小化版本的日历,可以水平滚动,并在单击日期时更新内容。

1
嘿,你可以试试我的库。https://github.com/afreakyelf/HorizontalCalendarLibrary这与你所需的非常相似。 - Rajat Mittal
2个回答

11

这是一篇旧帖,但我想分享我的发现

这个库提供了很棒的自定义功能,是用Kotlin编写的,支持SDK版本>=21

SingleRowCalendar GitHub

请查看此Medium帖子获取逐步指南。

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

输入图像描述 输入图像描述 输入图像描述 输入图像描述 输入图像描述


2
这个库似乎比我之前接受的更好,因此我将其标记为被接受的答案。 - Aju
它是否与Java兼容? - Abdulmalek
即使您的Android项目基于Java,仍然可以使用。 - Huds0nHawk
1
这个库很卡。当你更改月份时,无法选择日期,如果你设法选择日期,选择/取消选择日期需要长达2秒的时间。此外,该库的默认选择功能不起作用。 - Kishan Solanki
@KishanSolanki 我没有遇到任何卡顿,你能否详细说明一下。 - Huds0nHawk

1
你可以尝试这个很棒的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" />

然后你需要声明一个 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();
        }

      });

3
很遗憾,这个库已经超过1.5年没有得到维护。它有50个未解决的问题和有效的PR,并且还没有迁移到使用androidx。 - Huds0nHawk
即使在gradle中添加了'devs.mulham.horizontalcalendar:horizontalcalendar:1.3.4',它仍然无法在XML中解决。 - Vishnu M A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接