Set the text color of calendar view month name

android, java

Solution

As you've found out, the TextView is private, and there does not seem to be any methods for accessing it.

Although I wouldn't recommend it, you can accomplish this using the `java.lang.reflect` package:

    try
    {
        CalendarView cv = (CalendarView) this.findViewById(R.id.calendarView1);
        Class<?> cvClass = cv.getClass();
        Field field = cvClass.getDeclaredField("mMonthName");
        field.setAccessible(true);

        try
        {
            TextView tv = (TextView) field.get(cv);
            tv.setTextColor(Color.RED);
        } 
        catch (IllegalArgumentException e)
        {
            e.printStackTrace();
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace();
        }
    }
    catch (NoSuchFieldException e)
    {
        e.printStackTrace();
    }

Problem

In android , i am using an default CalendarView. I have set the background to light gray color. But can i change the color of month view of calendar view?

Original source