Android CalendarView для показа событий

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

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

Custom calendar view using Caldroid

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

Ответ 3

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

Ответ 4

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

https://github.com/tyczj/ExtendedCalendarView

Ответ 5

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