2012-02-23 10 views
9

Benim Theme.Light temasını kullanan benim uygulamada bir CalendarView eklemek çalışıyorum. Sorun şu ki, bu takvimin gün sayıları beyaz renktedir, dolayısıyla hafif bir tema kullanırken onları göremezsiniz.Değiştir CalendarView stil

Şu anda, benim XML düzeni dosyasında aşağıdaki kodu vardır:

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

Ama şey değişmez:

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

böyle takvim tema zorlamaya çalıştı. Ben android ile bir şeyler yapmak gerektiğini düşünüyorum: dateTextAppearance özelliği, bu yüzden bu çalıştı:

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

ama ya bir şey yapmaz.

Herhangi bir fikrin var mı?

Teşekkürler!

cevap

28

Projemde temamda "android: calendarViewStyle" özniteliğini tanımladım.

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

Tüm stilleri olasılıklar şunlardır:

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

not: showWeekNumber değil xml tarzı olarak çalışıyorsanız, sen setShowWeekNumber ile kodunda ayarlayabilirsiniz (doğru).

+0

Doğru mu?

+2

Yukarıdaki temayı kullanarak renk temasını değiştiremiyor –

+0

Bundan biraz daha fazlasını açıklayabilir misiniz? Tüm "@attr" materyallerini nerede kullanırım? Buna hiç aşina değilim. –

5

Çok fazla sorun yaşıyorum. Mükemmel olmasa da ve her yönünü nasıl değiştireceğimi anlamadım, yakınlaştım. Projenin stillerinde böyle yaptım.

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

Sen (birincil/ikincil) Yukarıdaki CalenderViewCustom için renklerin diğer türlerini ekleyebilirsiniz: Ben böylece bu stilleri başvurulan CalendarView için, Sonra

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

: xml bu iki tarzı ekledi.