2013-04-08 99 views
12

我已经在日历中获得了日历视图,现在我试图更改单日的外观以突出显示日期。 我没有找到任何有用的方法here,只有整个weekdates或monthdates出现的变化。 那么有没有可能突出一天?在日历视图中更改单日的颜色android

另外我知道有像3个职位相同的问题,但没有人得到答案。

+0

尝试此http://计算器.com/questions/9412402/change-calendarview-style – 2013-04-08 08:30:53

+0

如果我解释这个权利,他也会改变所有日期的外观,所以这对我来说不是一个解决方案,如果我理解错了,请纠正我。 – Werdli 2013-04-08 08:38:29

回答

9

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

您可以找到本机CalendarView here的代码。

+6

谢谢,不知道本机的CalendarView。 仍然android应该也许应该实现一个方法来更改CalendarView中的单日颜色! – Werdli 2013-04-08 09:14:55

+0

我发现日历视图非常容易混淆。我不明白为什么用户想要垂直或水平滚动,就好像您正在阅读长文本文档一样。我觉得这根本不符合人体工程学。我正在寻找如何防止滚动日历和每个视图只显示一个月的方法。 – 2015-04-09 14:16:41

+0

CalendarView源链接已死亡。 – 2015-08-20 22:57:34

4

你可以做到这一点通过获得CalendarView子视图,然后在那里configuations:

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