此元件只能在Android3.0以上使用
xml:
<CalendarView
android:id="@+id/calendarView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:showWeekNumber="false"
android:selectedWeekBackgroundColor="#FA8000"
android:focusedMonthDateColor="#111111"
android:background="@drawable/shape_calendar" />
來看一下xml的一些顏色屬性
android:unfocusedMonthDateColor="#ffffff" 不是在所選日期當月裡但是在螢幕上的日子顏色
android:selectedWeekBackgroundColor="#CCCCCC" 所選日期的當周背景顏色
android:focusedMonthDateColor="#3799FF" 所選日期當月字的顏色
android1:weekSeparatorLineColor="#FA8000" 每周的區隔線顏色
先看一下基本屬性
long getDate(); //獲取從1970年,1月1日,0點0分0秒到現在的毫秒數,因為返回是long型最終只能截止到2038年 int getFirstDayOfWeek(); //獲取當天是本週的第幾天,Android123提示返回的定義在java.util.Calendar類中,比如Calendar.Monday為星期一,定義值為2。 long getMaxDate(); //獲取CalendarView支持1970年到那天的最大天數 long getMinDate(); //獲取CalendarView支持1970年到那天的最小天數 boolean getShowWeekNumber(); //獲取是否顯示星期號 boolean isEnabled(); //是否顯示本日曆視圖 public void setDate(long date, boolean animate, boolean center); //設置選擇日期到1970年的描述 void setDate(long date); //設置選擇的日期描述到1970年 void setEnabled(boolean enabled); //設置是否啟用視圖 void setFirstDayOfWeek(int firstDayOfWeek); //設置本週起始天數 void setMaxDate(long maxDate); void setMinDate(long minDate); void setOnDateChangeListener(CalendarView.OnDateChangeListener listener); //監聽當按下日期 void setShowWeekNumber(boolean showWeekNumber); //設定是否顯示週號
其中我比較有問題的是
void setDate(long date);
這個函數,一直不知道該怎麼用
提供一個簡單的方法
Calendar day=Calendar.getInstance();
day.add(Calendar.DATE,-1); //目前日期的前一天
calendarView.setDate(day.getTimeInMillis());
可以用add()方法,來改變Calendar的時間,例如:
c.add(Calendar.MONTH, 1); // 目前時間加1個月
c.add(Calendar.HOUR, 3); // 目前時間加3小時
c.add(Calendar.YEAR, -2); // 目前時間減2年
c.add(Calendar.DAY_OF_WEEK, 3); // 目前的時間加3天
再來看程式內
calendarView = (CalendarView) findViewById(R.id.calendarView);
calendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {//監聽當日期改變
public void onSelectedDayChange(CalendarView view,
int year, int month, int dayOfMonth) {
//Month從0算起
String date = year + "年" + (month+1) + "月" + dayOfMonth
+ "日";
Toast.makeText(getApplicationContext(), date, 0).show();
}
});
如果要更深入的控制CalendarView元件 則要繼承他去覆寫