2013-04-08 10 views
12

Ho la vista calendario in eclissi e ora sto cercando di cambiare l'aspetto di un singolo giorno per evidenziare le date. Non ho trovato alcun metodo utile here, solo le modifiche di aspetto di intere date di fine settimana o date del mese. Quindi c'è la possibilità di evidenziare un singolo giorno?Cambiare colore del giorno singolo in calendarview, android

Inoltre so che ci sono 3 post con lo stesso problema, ma nessuno di loro ha avuto risposta.

+0

provare questo http: // StackOverflow .com/questions/9412402/change-calendarview-style –

+0

Se interpreto questo diritto, cambia anche l'aspetto di tutte le date, quindi questa non sarebbe una soluzione per me, se ho capito che sbagliato, correggimi. – Werdli

risposta

9

È possibile estendere il CalenderView nativo per creare il proprio CustomCalendarView e apportare le modifiche desiderate nell'aspetto.

È possibile trovare il codice per il calendario nativo CalendarView here.

+6

Grazie, non conoscevo il calendario nativo. Ancora Android dovrebbe forse implementare un metodo per cambiare i colori del giorno singolo in CalendarView! – Werdli

+0

Trovo la vista del calendario molto confusa da usare. Non capisco perché l'utente vuole scorrere verticalmente o orizzontalmente come se si stesse leggendo un documento di testo lungo un piede. Trovo che questo non sia affatto ergonomico. Sto cercando dei modi per evitare che il calendario scorra e mostri solo un mese per visualizzazione. –

+0

Il collegamento all'origine CalendarView è morto. –

4

Si può farlo ottenere il punto di vista del bambino CalendarView e cambiare là 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); 

Qui potete trovare tutte le dichiarazioni:

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

Problemi correlati