Android中如何修改CalendarView今日日期的背景色与文字颜色
解决Android CalendarView今日日期样式问题
问题原因
你之前的Selector未生效,核心原因是CalendarView的今日日期对应的状态是state_today="true",而非你使用的state_active;另外dateTextAppearance仅能控制文字样式,背景需要单独配置。
解决方案
1. 修改文字颜色Selector(解决字体颜色问题)
更新你的颜色Selector(res/color/selector_calendar_date.xml),添加state_today状态的匹配项,注意状态匹配顺序(从上到下优先匹配):
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 日期禁用状态 --> <item android:color="@color/calendar_text_disabled" android:state_enabled="false" /> <!-- 用户选中的日期状态 --> <item android:color="@color/calendar_selected_text_color" android:state_activated="true" android:state_enabled="true" /> <!-- 今日日期状态 --> <item android:color="@color/grey_80" android:state_today="true" android:state_enabled="true" /> <!-- 默认日期状态 --> <item android:color="@android:color/black" android:state_enabled="true" /> </selector>
2. 创建今日日期背景Drawable(解决灰色圆形背景问题)
在res/drawable下新建calendar_today_background.xml,定义圆形灰色背景:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!-- 灰色填充色 --> <solid android:color="@color/grey_20" /> <!-- 可选:如果需要边框,取消下面注释 --> <!-- <stroke android:width="1dp" android:color="@color/grey_40" /> --> </shape>
3. 配置CalendarView
在布局文件中给CalendarView同时设置文字样式和今日背景:
<CalendarView android:id="@+id/calendarView" android:layout_width="match_parent" android:layout_height="match_parent" android:dateTextAppearance="@style/CalendarView.DateAppearance" android:todayBackground="@drawable/calendar_today_background" />
你的CalendarView.DateAppearance样式可保留原配置:
<style name="CalendarView.DateAppearance"> <item name="android:textSize">16sp</item> <item name="android:lineHeight">20dp</item> <item name="android:textColor">@color/selector_calendar_date</item> </style>
内容的提问来源于stack exchange,提问作者Vishak A Kamath
相关产品推荐
相关产品推荐

