Android日历视图日期颜色

时间:2014-11-18 14:45:58

标签: android date colors calendarview

我有一个日历列表,我希望在calendarview上以红色显示。 我怎么办?

我的活动..

public class Calendario extends Activity {

    RelativeLayout rl;
    final Calendar calendar = Calendar.getInstance();
    CalendarView cal;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.calendar);

        rl = (RelativeLayout) findViewById(R.id.rl);
        cal = new CalendarView(Calendario.this);

        rl.addView(cal);
        cal.setOnDateChangeListener(new OnDateChangeListener() {

        @Override
        public void onSelectedDayChange(CalendarView view, int year, int month,
                int dayOfMonth) {
            // TODO Auto-generated method stub

        }
    });
    }


}

我要添加什么代码才能为日期着色?

3 个答案:

答案 0 :(得分:1)

您最好的选择可能是根据找到的源代码here创建自己的CalendarView类,即CalendarViewCustom。

然后,您可以向LegacyCalendarViewDelegate类添加一个额外的方法,类似于setFocusedMonthDateColor()方法,以迭代几周并在WeekView类中设置日期和颜色(可能值得将这些键/值日期/颜色存储为在WeekView类中映射集合实例变量)。 e.g。

public void setMonthDateColor(Date date, int color) {                
    final int childCount = mListView.getChildCount();
    for (int i = 0; i < childCount; i++) {
        WeekView weekView = (WeekView) mListView.getChildAt(i);
        if (weekView.isDateInWeek(date)) {
            //this method adds the date and colour to a 
            //Map collection in weekView Object 
            weekView.setDateColour(date, color);
        }
    }
}

然后需要通过向父类CalendarViewCustom(类似于其现有方法)添加另一个方法来暴露上述方法,然后可以在类的实例上调用该方法,即

public int setMonthDateColor(Date date, int color) {
    return mDelegate.getMonthDateColor(date, color);
}

然后,您需要做的就是使用现有for循环(for(; i&lt; nDays; i ++))在指定日期的WeekView类方法中绘制画布上列出的颜色,并迭代Map并更改日期文本的paint颜色,即mMonthNumDrawPaint.setColor()。

希望这能指出你正确的方向。

答案 1 :(得分:1)

试试这个。希望这有帮助

android:weekDayTextAppearance="@style/CalendarWeekDateText"


<style name="CalendarWeekDatText" parent="TextAppearance.AppCompat.Button">
    <item name="android:textColor">#000000</item>
</style>

答案 2 :(得分:0)

android:theme="@style/testTheme"

使用此主题或以父作为此主题的自定义主题。

使其成为白色

要选择除白色以外的其他颜色,请使用以下颜色

android:textColorPrimary="@color/yourColor"

对于其他文字颜色,请使用以下

android:weekDayTextAppearance="@style/weekDayTextAppearance"
    android:dateTextAppearance="@style/appTextAppearance"
    android:unfocusedMonthDateColor="@color/colorLoginBtn"
    android:selectedWeekBackgroundColor="@color/colorLoginBtn"
    android:weekSeparatorLineColor="@color/colorLoginBtn"
    android:focusedMonthDateColor="@color/colorLoginBtn"
    android:weekNumberColor="@color/colorLoginBtn"