2012-02-23 2 views
9

Я пытаюсь добавить CalendarView в мое приложение, которое использует тему Theme.Light. Проблема в том, что числа дней этого календаря отображаются белым цветом, поэтому при использовании легкой темы вы не можете их видеть.Изменить CalendarView style

Прямо сейчас, у меня есть следующий код в моем файле макета XML:

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

Я пытался заставить календарную тему так:

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

Но это ничего не меняет. Я думаю, что я должен сделать что-то с андроида: dateTextAppearance собственность, поэтому я попытался это:

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

но это не делает ничего, либо.

Любые идеи?

Спасибо!

ответ

28

В моем проекте я определил атрибут «android: calendarViewStyle» в моей теме.

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

Все стили возможности:

  • @attr исх android.R.styleable # CalendarView_showWeekNumber
  • @attr исх android.R.styleable # CalendarView_firstDayOfWeek
  • @attr исх android.R .styleable # CalendarView_minDate
  • @attr ref android.R.styleable # CalendarView_maxDate
  • @attr ref и roid.R.styleable # CalendarView_shownWeekCount
  • @attr исх android.R.styleable # CalendarView_selectedWeekBackgroundColor
  • @attr исх android.R.styleable # CalendarView_focusedMonthDateColor
  • @attr исх android.R.styleable # CalendarView_unfocusedMonthDateColor
  • @ атр реф android.R.styleable # CalendarView_weekNumberColor
  • @attr реф android.R.styleable # CalendarView_weekSeparatorLineColor
  • @attr исх android.R.styleable # CalendarView_selectedDateVerticalBar
  • @attr исх android.R.styleable # CalendarView_weekDayTextAppearance
  • @attr исх android.R.styleable # CalendarView_dateTextAppearance

примечание: если showWeekNumber не работает как стиль XML, вы можете установить в коде с setShowWeekNumber (правда).

+0

Верно ли это?

+2

Невозможно изменить цветную тему, используя указанное выше решение. –

+0

Можете ли вы подробнее рассказать об этом? Где я использую все эти материалы «@attr»? Я не знаком с этим вообще. –

5

У меня тоже были проблемы. Хотя это и не идеально, и я не понял, как изменить каждый аспект, я стал близок. Вот как я это сделал, в стилях проекта.XML я добавил эти два стиля:

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

Тогда для CalendarView я ссылочного эти стили, как так:

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

Вы можете добавить другие типы цветов (первичный/вторичный) в CalenderViewCustom выше.

Смежные вопросы