水平滚动日历视图
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
并查看 this Medium post 以获得分步指南。
这里有一些您可以轻松制作的示例 UI
我想创建如下图所示的可水平滚动的日历视图。
我有一些第三方库可以创建日历视图,但所有这些都只支持普通日历。我想要水平滚动的最小化日历版本,并在点击日期时更新内容。
你可以试试这个很棒的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
并查看 this Medium post 以获得分步指南。
这里有一些您可以轻松制作的示例 UI