Android CalendarView для отображения событий

Я хочу показать календарь с событиями, использующими разные цвета на дату, похожую на приложение календаря по умолчанию. Но я не вижу такого API в представлении календаря по умолчанию.

может кто-нибудь, пожалуйста, направьте меня в правильном направлении, как это сделать? Должен ли я расширить календарь по умолчанию и добавить свои собственные функции? Или я должен использовать текстовые поля 5x5 с PageViewer и фрагментами?

5 ответов


встроенный виджет CalendarView не предоставляет возможность изменять цвет ячеек календаря в представлении месяца. См.источник.

вы можете попробовать следующие подходы:

  1. расширить из CalendarView и реализовать onDraw самостоятельно. Вам придется переопределить все существующее поведение чертежа, включая следующие 4 метода:

    protected void onDraw(Canvas canvas) {
        drawBackground(canvas);
        drawWeekNumbersAndDates(canvas);
        drawWeekSeparators(canvas);
        drawSelectedDateVerticalBars(canvas);
    }
    
  2. реализуйте собственный CalendarView, который позволяет настраивать ячейки. Я предлагаю этот проект как хорошее место для начала работы, так как он уже поддерживает пользовательские ячейки.


в прошлом месяце я смог реализовать небольшое представление календаря с помощью Caldroid https://github.com/roomorama/Caldroid.

он гибкий в использовании, и не так сложно получить пользовательский вид календаря, как реализация onDraw с CalendarView.

Проверьте представление, которое я создал (просто следуя документации):

Custom calendar view using Caldroid

и, конечно, вы можете идти дальше.


Я написал свой собственный CalendarView так же, как и в Google календарях. Дает возможность прокручивать между месяцами, слушателями, добавлять события и является проектом gradle:https://github.com/SundeepK/CompactCalendarView. Он использует краску, чтобы сделать весь рисунок, поэтому его легко изменить, чтобы сделать все, что вы хотите.


следующий проект-лучшая альтернатива, которую я видел до сих пор, чтобы позволить отображать визуальные эффекты для конкретных событий в ячейке даты в календаре:

https://github.com/tyczj/ExtendedCalendarView


Как насчет изменения цвета определенных дат-с помощью android: dateTextAppearance и setDateTextAppearance (int)? Это было однажды описано: изменить цвет календарных дат android Вы можете попробовать это