您的位置:首页 > 移动开发 > Android开发

android Material Calendar View的日期颜色修改~

2017-10-30 10:20 218 查看
https://github.com/prolificinteractive/material-calendarview

  最近在实现一个日期功能,接触到了这个优秀的android端的三方控件。关于这个控件的一些其他自定义需求(给特定日期下面加点、修改title等),有很多相关的blog,我就不在这里写了。这一篇主要是写一下怎么修改日期的颜色。(好像没找到相关的文章

  其实这个控件的具体实现是使用viewpager等实现的,每一个日期都是一个格子(DayView)。我这里需要实现的需求是,将周六日的日期变成灰色。

  1、将星期栏的周六日变成灰色。在weekdayview这个类中修改如下代码:public void setDayOfWeek(int dayOfWeek) {
this.dayOfWeek = dayOfWeek;
if(dayOfWeek == 1 || dayOfWeek == 7){
setText(Html.fromHtml("<font color=\"#999090\">"+formatter.format(dayOfWeek)+"</font>"));
}else {
setText(formatter.format(dayOfWeek));
}
}  2、将日期栏中的所有周六日日期变成灰色。在DayView类中作如下修改:找到所有使用到setText()方法的地方,包括setDay(), setDayFormatter()和applyFacade().在setText下面添加如下代码
if (dd == 1 || dd == 7) {
setTextAppearance(R.style.CustomTextApp2);
}

这里的dd变量为我新加的标识星期的变量,需要在DayView中增加一个本地int变量,同时在构造函数里添加。
public DayView(Context context, CalendarDay day , int i) {
super(context);

fadeTime = getResources().getInteger(android.R.integer.config_shortAnimTime);

setSelectionColor(this.selectionColor);
this.dd = i;//传入星期
setGravity(Gravity.CENTER);
setTextSize(30);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_
4000
MR1) {
setTextAlignment(TEXT_ALIGNMENT_CENTER);
}
setDay(day);
}

然后在CalendarPageView类中使用到DayView方法的地方传入这个星期变量:
protected void addDayView(Collection<DayView> dayViews, Calendar calendar) {
CalendarDay day = CalendarDay.from(calendar);
int i = calendar.get(Calendar.DAY_OF_WEEK);
DayView dayView = new DayView(getContext(), day ,i);
dayView.setOnClickListener(this);
dayViews.add(dayView);
addView(dayView, new LayoutParams());
calendar.add(DATE, 1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: