2013-04-08 11 views
12

Mam widok kalendarza w czasie zaćmienia, a teraz próbuję zmienić wygląd jednego dnia, aby podświetlić daty. Nie znalazłem żadnej użytecznej metody here, zmienia się tylko wygląd wszystkich dni tygodnia lub miesięcy. Czy istnieje możliwość wyróżnienia jednego dnia?Zmiana koloru jednego dnia w widoku kalendarza, Android

Również wiem, że istnieją 3 posty z tym samym problemem, ale żadna z nich nie została odebrana.

+0

Spróbuj tego http: // stackoverflow .pl/questions/9412402/change-calendarview-style –

+0

Jeśli dobrze to zinterpretuję, on również zmienia wygląd wszystkich dat, więc nie byłoby to dla mnie rozwiązaniem, jeśli zrozumiałem to źle, popraw mnie. – Werdli

Odpowiedz

9

Można rozszerzyć natywny CalenderView, aby utworzyć własny CustomCalendarView i wprowadzić dowolne zmiany w wyglądzie.

Możesz znaleźć kod macierzystego CalendarView here.

+6

Dzięki, nie znasz macierzystego CalendarView. Nadal Android powinien być może zaimplementować metodę zmiany kolorów jednego dnia w CalendarView! – Werdli

+0

Uważam, że widok kalendarza jest bardzo mylący w użyciu. Nie rozumiem, dlaczego użytkownik chce przewijać w pionie lub w poziomie, tak jak czytasz długometrażowy dokument tekstowy. Uważam, że nie jest to wcale ergonomiczne. Szukam sposobów na zapobieganie przewijaniu kalendarza i wyświetlanie tylko jednego miesiąca na widok. –

+0

Link źródła kalendarza jest nieaktywny. –

4

Można to zrobić poprzez uzyskanie widoki podrzędne CalendarView i zmienić tam configuations:

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); 

Tutaj można znaleźć wszystkie deklaracje:

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

Powiązane problemy