我正在制作一个Android日历,我在这个网站上选择了这个教程:http://www.androidhub4you.com/2012/10/custom-calendar-in-android.html
我无法更改某些代码行, 三个问题:
一:表示今天每天出现的颜色。我想只出现在当月。
二:将周日和周一的颜色更改为红色。
三:在周日和周一的日子里不允许点击
<小时/> 代码
第一和第二个问题:
for (int i = 1; i <= daysInMonth; i++) {
Log.d(currentMonthName, String.valueOf(i) + " "
+ getMonthAsString(currentMonth) + " " + yy);
if (i == getCurrentDayOfMonth()) {
list.add(String.valueOf(i) + "-BLUE" + "-"
+ getMonthAsString(currentMonth) + "-" + yy);
}
//else if not working
else if (i == Calendar.SUNDAY){
list.add(String.valueOf(i) + "-RED" + "-"
+ getMonthAsString(currentMonth) + "-" + yy);
} else {
list.add(String.valueOf(i) + "-WHITE" + "-"
+ getMonthAsString(currentMonth) + "-" + yy);
}
}
问题三:
Override
public void onClick(View view) {
// i cant implement the if statament for that :(
String date_month_year = (String) view.getTag();
Intent intent = new Intent(getBaseContext(), func_agenda.class);
intent.putExtra("user_auth", "Paulo");
intent.putExtra("user_date", date_month_year);
startActivity(intent);
try {
Date parsedDate = dateFormatter.parse(date_month_year);
Log.d(tag, "Parsed Date: " + parsedDate.toString());
} catch (ParseException e) {
e.printStackTrace();
}
}
答案 0 :(得分:0)
问题1:
目前您正在检查当天的天数( i )是否与当月的当天天数( getCurrentDayOfMonth())相同,因此,对于例;今天9月2日当天的数量是2,不管月份。你必须对你的病情更加严格。你不仅要检查一天,还要检查你所在的月份。
您可能需要更改代码:
if (i == getCurrentDayOfMonth()) {
类似于:
if (i == getCurrentDayOfMonth() && mm == _calendar.get(Calendar.MONTH) ) { //Check if mm is from zero to 11. If not the condition should be mm-1 ==...
<小时/> 问题2:
i的值将是1到30&amp; something(或某些情况下为28/29)。常量Calendar.SUNDAY的值为1.因此,在您的代码中,您询问i的当前值是否等于1.您必须查看当前月份的i的当前值是否显示是SUNDAY,怎么样?这篇文章可以解释你:how-to-determine-day-of-week-by-passing-specific-date
您可能需要更改代码:
else if (i == Calendar.SUNDAY){
类似于:
else if ( newMethodToGetDayOfWeek(i,mm,yy) == Calendar.SUNDAY){
<小时/> 问题3:
如果所选按钮是星期日或星期一,请点击日历当天后查看。在之前发布的代码中,您可以看到他们正在创建Date对象(parseDate)。您可以检查此日期是星期一/星期日,也可以根据该开始来确定活动..
从您的代码到:
Override
public void onClick(View view) {
String date_month_year = (String) view.getTag();
try {
Date parsedDate = dateFormatter.parse(date_month_year);
Log.d(tag, "Parsed Date: " + parsedDate.toString());
if( anotherNewMethodToSeeIfTheDateIsSundayOrMonday( parsedDate ) == false )
{
Intent intent = new Intent(getBaseContext(), func_agenda.class);
intent.putExtra("user_auth", "Paulo");
intent.putExtra("user_date", date_month_year);
startActivity(intent);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
其中 anotherNewMethodToSeeIfTheDateIsSundayOrMonday 应该是这样的:
private bool anotherNewMethodToSeeIfTheDateIsSundayOrMonday(Date date)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int doWeek = cal.get(Calendar.DAY_OF_WEEK)
if( doWeek == Calendar.SUNDAY || doWeek == Calendar.MONDAY )
{
return true;
}
return false;
}
来自here