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

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

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


person Werdli    schedule 08.04.2013    source источник
comment
Попробуйте это stackoverflow.com/questions/9412402/change-calendarview-style   -  person Abhishek Sabbarwal    schedule 08.04.2013
comment
Если я правильно интерпретирую это, он также меняет внешний вид всех дат, так что это не будет для меня решением, если я неправильно понял, пожалуйста, поправьте меня.   -  person Werdli    schedule 08.04.2013


Ответы (2)


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

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

person Abhishek Sabbarwal    schedule 08.04.2013
comment
Спасибо, не знал родной CalendarView. Тем не менее, Android, возможно, должен реализовать метод для изменения цвета одного дня в CalendarView! - person Werdli; 08.04.2013
comment
Я нахожу представление календаря очень запутанным в использовании. Я не понимаю, почему пользователь хочет прокручивать по вертикали или по горизонтали, как если бы вы читали текстовый документ длиной в фут. Мне кажется это совсем не эргономичным. Я ищу способы, как предотвратить прокрутку календаря и показывать только один месяц для просмотра. - person Neon Warge; 09.04.2015
comment
Исходная ссылка CalendarView не работает. - person Colin Basnett; 21.08.2015

Вы можете сделать это, получив дочерние представления 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

person Stav Bodik    schedule 04.02.2015