更改CalendarView样式

我正在尝试在我的应用程序中添加一个CalendarView,该应用程序使用Theme.Light主题。 问题是,这个日历的天数是白色的,所以在使用一个轻的主题时,你看不到它们。

现在,我在我的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" /> 

但它不会改变任何东西。 我想我应该做一些与android:dateTextAppearance属性,所以我试过这个:

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

但它也没有做任何事情。

有任何想法吗 ?

谢谢 !

Solutions Collecting From Web of "更改CalendarView样式"

在我的项目中,我在主题中定义了属性“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 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 android.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

注意:如果showWeekNumber不能用作xml样式,可以在setShowWeekNumber(true)的代码中设置。

我也遇到了很多麻烦。 虽然不完美,我还没有想出如何修改每一个方面,我接近了。 我是这样做的,在项目的styles.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"/> 

您可以将其他types的颜色(主要/次要)添加到上面的CalenderViewCustom中。