2012-02-23 12 views
9

Sto tentando di aggiungere un CalendarView nella mia applicazione, che utilizza il tema Theme.Light. Il problema è che i numeri dei giorni di questo calendario sono resi in bianco, quindi mentre usi un tema leggero, non puoi vederli.Cambia CalendarView style

In questo momento, ho il seguente codice nel mio file di layout XML:

<CalendarView 
    android:id="@+id/calendar1" 
    android:layout_width="500dp" 
    android:layout_height="300dp"/> 

Ho provato a forzare il tema del calendario in questo modo:

<CalendarView 
    android:id="@+id/calendar1" 
    android:layout_width="500dp" 
    android:layout_height="300dp" 
    android:theme="@android:style/Theme.Light" /> 

Ma non cambia nulla. Penso che dovrei fare qualcosa con l'androide: proprietà dateTextAppearance, così ho provato questo:

<CalendarView 
    android:id="@+id/calendar1" 
    android:layout_width="500dp" 
    android:layout_height="300dp" 
    android:dateTextAppearance="@android:style/TextAppearance.Large.Inverse" /> 

ma non fa niente.

Qualche idea?

Grazie!

risposta

28

Nel mio progetto ho definito l'attributo "android: calendarViewStyle" nel mio tema.

<style name="Theme.Custom" parent="@android:Theme"> 
    <item name="android:calendarViewStyle">@style/Widget.CalendarView.Custom</item> 
</style> 

<style name="Widget.CalendarView.Custom" parent="android:Widget.CalendarView"> 
    <item name="android:focusedMonthDateColor">@color/cs_textcolor</item> 
    <item name="android:weekNumberColor">@color/red</item> 
    <item name="android:weekDayTextAppearance">@style/TextAppearance.Medium</item> 
    <item name="android:dateTextAppearance">@style/TextAppearance.Medium</item> 
</style> 

Tutte le possibilità di stili sono:

  • @attr rif android.R.styleable # CalendarView_showWeekNumber
  • @attr rif android.R.styleable # CalendarView_firstDayOfWeek
  • @attr rif android.R .styleable # CalendarView_minDate
  • @attr ref android.R.styleable # CalendarView_maxDate
  • @attr ref e roid.R.styleable # CalendarView_shownWeekCount
  • @attr rif android.R.styleable # CalendarView_selectedWeekBackgroundColor
  • @attr rif android.R.styleable # CalendarView_focusedMonthDateColor
  • @attr rif android.R.styleable # CalendarView_unfocusedMonthDateColor
  • @ attr ref android.R.styleable # CalendarView_weekNumberColor
  • @attr rif android.R.styleable # CalendarView_weekSeparatorLineColor
  • @attr rif android.R.styleable # CalendarView_selectedDateVerticalBar
  • @attr ref android.R.styleable # CalendarView_weekDayTextAppearance
  • @attr rif android.R.styleable # CalendarView_dateTextAppearance

nota: se showWeekNumber non funziona come stile XML, è possibile impostare nel codice con setShowWeekNumber (vero).

+0

E 'corretto?

+2

impossibile cambiare il tema del colore utilizzando la soluzione di cui sopra –

+0

Puoi approfondire un po 'questo argomento? Dove uso tutte quelle cose "@attr"? Non mi è affatto familiare. –

5

Ho avuto anche molti problemi. Pur non essendo perfetto, e non ho capito come modificare ogni aspetto, mi sono avvicinato. È così che l'ho fatto, negli stili del progetto.xml ho aggiunto questi due stile:

<style name="CalenderViewCustom" parent="Theme.AppCompat"> 
    <item name="colorAccent">@color/white_30</item> 
</style> 

<style name="CalenderViewDateCustomText" parent="android:TextAppearance.DeviceDefault.Small"> 
    <item name="android:textColor">@color/white</item> 
</style> 

<style name="CalenderViewWeekCustomText" parent="android:TextAppearance.DeviceDefault.Small"> 
    <item name="android:textColor">@color/white_30</item> 
</style> 

Poi, per la CalendarView ho fatto riferimento quegli stili come così:

<CalendarView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:theme="@style/CalenderViewCustom" 
    android:dateTextAppearance="@style/CalenderViewDateCustomText" 
    android:weekDayTextAppearance="@style/CalenderViewWeekCustomText"/> 

È possibile aggiungere altri tipi di colori (primario/secondario) per CalenderViewCustom sopra.