Если вам нужен WeekView, также создайте класс, расширяющий WeekView, RangeWeekView или MultiWeekView.
/**
* CustomMonthView с canvas
*/
public class CustomMonthView extends MonthView {
/**
* Рисование выбранного календаря
*
* @param canvas canvas
* @param calendar выбранный календарь
* @param x начальная точка x элемента календаря
* @param y начальная точка y элемента календаря
* @param hasScheme есть ли у календаря схема?
* @return если возвращает true, снова вызовет onDrawScheme
*/
@Override
protected boolean onDrawSelected(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme) {
canvas.drawRect(x , y , x + mItemWidth , y + mItemHeight, mSelectedPaint);
return true;
}
/**
* рисование схемы, если у календаря есть схема
*
* @param canvas canvas
* @param calendar календарь имеет схему
* @param x начальная точка x элемента календаря
* @param y начальная точка y элемента календаря
*/
@Override
protected void onDrawScheme(Canvas canvas, Calendar calendar, int x, int y) {
canvas.drawCircle(x + mItemWidth / 2, y + mItemHeight - 3 * mPadding, mPointRadius, mPointPaint);
}
/**
* рисование текста
*
* @param canvas canvas
* @param calendar календарь
* @param x начальная точка x элемента календаря
* @param y начальная точка y элемента календаря
* @param hasScheme есть ли у календаря схема?
* @param isSelected выбран ли календарь?
*/
@Override
protected void onDrawText(Canvas canvas, Calendar calendar, int x, int y, boolean hasScheme, boolean isSelected) {
float baselineY = mTextBaseLine + y;
int cx = x + mItemWidth / 2;
canvas.drawText(String.valueOf(calendar.getDay()),
cx,
baselineY,
calendar.isCurrentDay() ? mCurDayTextPaint :
calendar.isCurrentMonth() ? mSchemeTextPaint : mOtherMonthTextPaint);
}
}
<attr name="month_view" format="string" /><!--ваш путь к MonthView.class-->
<attr name="week_view" format="string" /> <!--ваш путь к WeekView.class-->
<com.haibin.calendarview.CalendarView
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:month_view="com.haibin.calendarviewproject.meizu.MeiZuMonthView"
app:week_view="com.haibin.calendarviewproject.meizu.MeizuWeekView" />
mCalendarView.setWeekView(MeiZuWeekView.class);
mCalendarView.setMonthView(MeiZuMonthView.class);
MonthView、WeekView,и select_mode="default_mode"
То же, что и календарь мобильного телефона, перехват даты не поддерживается
MonthView、WeekView,и select_mode="single_mode"
Одиночный режим, поддержка перехвата даты
RangeMonthView、RangeWeekView,необходимо установить select_mode="range_mode"
Поддержка перехвата дат
MultiMonthView、MultiWeekView,необходимо установить select_mode="multi_mode"
Поддержка перехвата дат
<com.haibin.calendarview.CalendarLayout
android:layout_width="match_parent" **Текст запроса:**
android:layout_height="match_parent"
android:orientation="vertical"
app:default_status="shrink"
app:calendar_content_view_id="@+id/recyclerView">
<com.haibin.calendarview.CalendarView
android:id="@+id/calendarView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:month_view="com.haibin.calendarviewproject.simple.SimpleMonthView"
app:week_view="com.haibin.calendarviewproject.simple.SimpleWeekView"
app:week_bar_view="com.haibin.calendarviewproject.EnglishWeekBar"
app:month_view_show_mode="mode_only_current" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" />
</com.haibin.calendarview.CalendarLayout>
- Вы можете использовать слушатель для отслеживания переключения между WeekView и MonthView.
```java
public void setOnViewChangeListener(OnViewChangeListener listener);
<attr name="default_status">
<enum name="expand" value="0" />
<enum name="shrink" value="1" />
</attr>
<!-- gesture -->
<attr name="gesture_mode">
<enum name="default_mode" value="0" />
<enum name="disabled" value="2" />
</attr>
<attr name="calendar_show_mode">
<enum name="both_month_week_view" value="0" />
<enum name="only_week_view" value="1" />
<enum name="only_month_view" value="2" />
</attr>
<attr name="calendar_content_view_id" format="integer" />
Если вам нужен полный стиль CalendarView, установите app:calendar_match_parent="true", нет необходимости использовать CalendarLayout.
CalendarView также предоставляет YearView, если он вам нужен.
При необходимости быстрого перехода к дате можно использовать следующие методы:
CalendarView.scrollToCalendar();
CalendarView.scrollToNext();
CalendarView.scrollToPre();
CalendarView.scrollToXXX();
app:week_start_with="mon、sun、sat"
mCalendarView.setWeekStarWithSun();
mCalendarView.setWeekStarWithMon();
mCalendarView.setWeekStarWithSat();
<attr name="min_year" format="integer" />
<attr name="max_year" format="integer" />
<attr name="min_year_month" format="integer" />
<attr name="max_year_month" format="integer" />
<attr name="min_year_day" format="integer" />
<attr name="max_year_day" format="integer" />
CalendarView.setRange(int minYear, int minYearMonth, int minYearDay,
int maxYear, int maxYearMonth, int maxYearDay)
mCalendarView.setOnCalendarInterceptListener(new CalendarView.OnCalendarInterceptListener() {
@Override
public boolean onCalendarIntercept(Calendar calendar) {
return calendar.isWeekend();
}
@Override
public void onCalendarInterceptClick(Calendar calendar, boolean isClick) {
//todo 点击拦截的日期回调
}
});
boolean isInRange = isInRange(calendar);
boolean isEnable = !onCalendarIntercept(calendar);
Класс Calendar:
boolean isWeekend();
int getWeek();
String getSolarTerm();
String getGregorianFestival();
String getTraditionFestival();
boolean isLeapYear();
int getLeapMonth();
boolean isSameMonth(Calendar calendar);
int compareTo(Calendar calendar);
long
``` ### Все атрибуты **CalendarView**
```xml
<declare-styleable name="CalendarView">
<attr name="calendar_padding" format="dimension" /><!--CalendarView левое и правое заполнение-->
<attr name="month_view" format="color" /> <!--Пользовательский путь класса-->
<attr name="week_view" format="string" /> <!--Пользовательский путь класса -->
<attr name="week_bar_height" format="dimension" /> <!--Высота WeekBar-->
<attr name="week_bar_view" format="string" /> <!--Путь пользовательского класса WeekBar -->
<attr name="week_line_margin" format="dimension" /><!--поле линии-->
<attr name="week_line_background" format="color" /><!--цвет линии-->
<attr name="week_background" format="color" /> <!--Фон WeekBar-->
<attr name="week_text_color" format="color" /> <!--Цвет текста WeekBar-->
<attr name="week_text_size" format="dimension" /><!--Размер текста WeekBar-->
<attr name="current_day_text_color" format="color" /> <!--цвет текста текущего дня-->
<attr name="current_day_lunar_text_color" format="color" /><!--цвет лунного текста текущего дня-->
<attr name="calendar_height" format="string" /> <!--высота элемента календаря-->
<attr name="day_text_size" format="string" /> <!--размер текста дня календаря-->
<attr name="lunar_text_size" format="string" /> <!--размер лунного текста календаря-->
<attr name="scheme_text_color" format="color" /> <!--цвет текста схемы календаря-->
<attr name="scheme_month_text_color" format="color" /> <!--цвет месяца схемы календаря-->
<attr name="scheme_lunar_text_color" format="color" /> <!--цвет лунного текста схемы календаря-->
<attr name="scheme_theme_color" format="color" /> <!-- цвет темы фона схемы календаря-->
<attr name="selected_theme_color" format="color" /> <!--выбранный цвет темы календаря-->
<attr name="selected_text_color" format="color" /> <!--выбранный цвет текста календаря-->
<attr name="selected_lunar_text_color" format="color" /> <!--выбранный лунный цвет текста календаря-->
<attr name="current_month_text_color" format="color" /> <!--текущий цвет текста месяца-->
<attr name="other_month_text_color" format="color" /> <!--другой цвет текста месяца-->
<attr name="current_month_lunar_text_color" format="color" /> <!--текущий лунный цвет текста месяца-->
<attr name="other_month_lunar_text_color" format="color" /> <!--другой лунный цвет текста месяца-->
<!-- YearView -->
<attr name="year_view_month_text_size" format="dimension" /> <!-- размер текста месяца year view-->
<attr name="year_view_day_text_size" format="dimension" /> <!-- size текста дня year view-->
<attr name="year_view_month_text_color" format="color" /> <!-- color текста месяца year view-->
<attr name="year_view_day_text_color" format="color" /> <!-- color текста дня year view-->
<attr name="year_view_scheme_color" format="color" /> <!-- scheme цвет year view-->
<attr name="min_year" format="integer" /> <!--min_year-->
<attr name="max_year" format="integer" /> <!--max_year-->
<attr name="min_year_month" format="integer" /> <!--min_year_month-->
<attr name="max_year_month" format="integer" /> <!--max_year_month-->
<!--MonthView можно прокручивать-->
<attr name="month_view_scrollable" format="boolean" />
<!--WeekView можно прокручивать-->
<attr name="week_view_scrollable" format="boolean" />
<!--YearView можно прокручивать-->
<attr name="year_view_scrollable" format="boolean" />
<!--MonthView режим отображения-->
<attr name="month_view_show_mode">
<enum name="mode_all" value="0" /> <!--показать предыдущий, текущий и следующий месяц календаря-->
<enum name="mode_only_current" value="1" /> <!--показать только текущий месяц-->
<enum name="mode_fix" value="2" /> <!--зафиксировать текущий месяц-->
</attr>
<!-- WeekStar -->
<attr name="week_start_with">
<enum name="sun"
</declare-styleable>
``` Используйте лучше с демо при использовании. Календарь очень прост в настройке.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )