# CalendarView
**Repository Path**: shilingpp103/CalendarView
## Basic Information
- **Project Name**: CalendarView
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-09-18
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# CalendarView
### 功能
* 1、支持农历、节气、常用节假日
* 2、日期范围设置,默认支持的最大日期范围[1900.1~2049.12]
* 3、禁用日期范围设置
* 4、初始化选中单个或多个日期
* 5、单选、多选操作
* 6、跳转到指定日期
* 7、替换农历为指定文字
* 8、通过自定义属性定制日期外观,以及简单的日期item布局配置
* 9、......
#### [基本原理](http://www.jianshu.com/p/304c8e70d0bd)
#### [demo体验](https://fir.im/vehj?release_id=5a3c76cc959d695b3800035b)
### 效果图:
||||
|---|---|---|
### 基本用法:
**Step 1. 添加JitPack仓库**
在当前项目等根目录下的 `build.gradle` 文件中添加如下内容:
``` gradle
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
```
**Step 2. 添加项目依赖**
``` gradle
dependencies {
compile 'com.github.Othershe:CalendarView:1.2.1'
}
```
**Step 3. 在布局文件中添加WeekView、CalendarView**
```java
```
**Step 4. 相关初始化**
```java
CalendarView calendarView = (CalendarView) findViewById(R.id.calendar);
//日历init,年月日之间用点号隔开
calendarView
.setStartEndDate("2010.7", "2018.12")
.setInitDate("2017.11")
.setSingleDate("2017.12.12")
.init();
//月份切换回调
calendarView.setOnPagerChangeListener(new OnPagerChangeListener() {
@Override
public void onPagerChanged(int[] date) {
}
});
//单选回调
calendarView.setOnItemClickListener(new OnMonthItemClickListener() {
@Override
public void onMonthItemClick(View view, DateBean date) {
}
});
```
### CalendarView相关方法
|方法名|描述
|---|---|
|setInitDate(String date)|设置日历的初始显示年月
|setStartEndDate(String startDate, String endDate)|设置日历开始、结束年月
|setDisableStartEndDate(String startDate, String endDate)|设置日历的禁用日期范围(小于startDate、大于endDate禁用)
|setSpecifyMap(HashMap map)|将显示农历的区域替换成指定文字
|setSingleDate(String date)|设置单选时初始选中的日期(不设置则不默认选中)
|getSingleDate()|得到单选时选中的日期
|setMultiDate(List dates)|设置多选时默认选中的日期集合
|getMultiDate()|得到多选时选中的全部日期
|toSpecifyDate(int year, int month, int day)|单选时跳转到指定年月日
|setOnCalendarViewAdapter(int layoutId, CalendarViewAdapter adapter)|设置自定义日期item样式
|init()|日期初始化(以上属性配置完后调用)
|setOnPagerChangeListener(OnPagerChangeListener listener)|设置月份切换回调
|setOnSingleChooseListener(OnSingleChooseListener listener)|设置单选回调
|setOnMultiChooseListener(OnMultiChooseListener listener)|设置多选回调
|today()| 单选时跳转到今天
|nextMonth()|跳转到下个月
|lastMonth()|跳转到上个月
|nextYear()|跳转到下一年的当前月
|lastYear()|跳转到上一年的当前月
|toStart()|跳转到日历的开始年月
|toEnd()|跳转到日历的结束年月
|CalendarUtil.getCurrentDate()|获得当前日期(今天)
### CalendarView的自定义属性
namespace:xmlns:calendarview="http://schemas.android.com/apk/res-auto"
|属性名|格式|描述|默认值
|---|---|---|---|
|choose_type|enum|设置单选(single)、多选(multi)|single
|show_lunar|boolean|是否显示农历|true
|show_last_next|boolean|是否在MonthView显示上月和下月日期|true
|show_holiday|boolean|是否显示节假日|true
|show_term|boolean|是否显示节气|true
|switch_choose|boolean|单选时切换月份,是否选中上次的日期|true
|solar_color|color|阳历日期的颜色
|solar_size|integer|阳历的日期尺寸|14
|lunar_color|color|农历的日期颜色
|lunar_size|integer|农历的日期尺寸|8
|holiday_color|color|节假日、节气的颜色
|choose_color|color|选中的日期颜色
|day_bg|reference|选中的日期背景(图片)
### WeekView的自定义属性
namespace:xmlns:weekview="http://schemas.android.com/apk/res-auto"
|属性名|格式|描述|默认值
|---|---|---|---|
|week_str|string|周的表示形式,用点隔开(例如:日.一.二.三.四.五.六)
|week_color|color|周的颜色
|week_size|integer|周的尺寸|12