Изменение цвета одного дня в просмотре календаря, Android

У меня есть представление календаря в затмении, и теперь я пытаюсь изменить внешний вид одного дня, чтобы выделить даты. Я не нашел здесь никакого полезного метода, только изменения появления целых дней недели или месяцев. Так есть ли возможность выделить один день?

Также я знаю, что есть как 3 сообщения с той же самой проблемой, но ни один из них не получил ответа.

2 ответа

Решение

Вы можете расширить собственный CalenderView, чтобы создать свой собственный CustomCalendarView и вносить любые желаемые изменения во внешний вид.

Вы можете найти код для родного CalendarView здесь.

Вы можете сделать это путем получения дочерних просмотров CalendarView и поменяй там настройки:

    final CalendarView calendar = new CalendarView(this);       
    java.lang.reflect.Field field = null;

    Class<?> cvClass = calendar.getClass();
    try {
        field = cvClass.getDeclaredField("mDayNamesHeader");    
        field.setAccessible(true);
    } catch (NoSuchFieldException e) {
    }

    ViewGroup tv = null;
    try {
        tv = (ViewGroup) field.get(calendar);
    } catch (IllegalAccessException e) {} 
      catch (IllegalArgumentException ){}

    TextView k =  (TextView) tv.getChildAt(1);
    k.setTextColor(Color.RED);

Здесь Вы можете найти все объявления:

https://android.googlesource.com/platform/frameworks/base/+/2888524e03896831f487e5dee63f18f1c33c0115/core/java/android/widget/CalendarView.java

Другие вопросы по тегам