在calendarview,android中改变单日的颜色

时间:2013-04-08 08:06:55

标签: java android eclipse calendarview

我已经在日食中获得了日历视图,现在我正在尝试更改一天的外观以突出显示日期。 我没有找到任何有用的方法here,只发现整个周期或月份的外观变化。 那么有可能突出一天吗?

我也知道有3个帖子有同样的问题,但没有一个得到答案。

2 个答案:

答案 0 :(得分:9)

您可以扩展本机CalenderView以创建自己的CustomCalendarView并在外观上进行任何所需的更改。

您可以找到原始CalendarView here的代码。

答案 1 :(得分:4)

您可以通过获取CalendarView的子视图并更改配置来执行此操作:

    final CalendarView calendar = new CalendarView(this);       
    java.lang.reflect.Field field = null;

    Class<?> cvClass = calendar.getClass();
    try {
        field = cvClass.getDeclaredField("mDayNamesHeader");    
        field.setAccessible(true);
    } catch (NoSuchFieldException e) {
    }

    ViewGroup tv = null;
    try {
        tv = (ViewGroup) field.get(calendar);
    } catch (IllegalAccessException e) {} 
      catch (IllegalArgumentException ){}

    TextView k =  (TextView) tv.getChildAt(1);
    k.setTextColor(Color.RED);

在这里您可以找到所有声明:

https://android.googlesource.com/platform/frameworks/base/+/2888524e03896831f487e5dee63f18f1c33c0115/core/java/android/widget/CalendarView.java