2012-02-23 39 views
9

Estoy tratando de agregar un CalendarView en mi aplicación, que utiliza el tema Theme.Light. El problema es que los números de días de este calendario se muestran en blanco, por lo que al usar un tema claro, no se pueden ver.Cambiar el estilo CalendarView

En este momento, tengo el siguiente código en mi archivo del formato XML:

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

traté de forzar el tema del calendario de esta manera:

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

Pero eso no cambia nada. Creo que debería hacer algo con el androide: dateTextAppearance propiedad, por lo que he intentado esto:

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

pero no hace nada tampoco.

¿Alguna idea?

Gracias!

Respuesta

28

En mi proyecto, definí el atributo "android: calendarViewStyle" en mi 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> 

Todas las posibilidades estilos son:

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

nota: si no funciona como showWeekNumber estilo XML, se puede establecer en el código con setShowWeekNumber (cierto).

+0

¿Es correcto?

+2

no se puede cambiar el color del tema con la solución anterior –

+0

¿Puedes elaborar un poco más sobre esto? ¿Dónde uso todas esas cosas "@attr"? No estoy familiarizado con eso en absoluto. –

5

También he tenido muchos problemas. Si bien no es perfecto, y no he descubierto cómo modificar todos los aspectos, me acerqué. Así es como lo hice, en los estilos del proyecto.xml añadí estos dos estilos:

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

Entonces, para el CalendarView hice referencia a los estilos como tan:

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

Se pueden añadir los otros tipos de colores (primaria/secundaria) a CalenderViewCustom anteriormente.

Cuestiones relacionadas