此元件只能在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元件 則要繼承他去覆寫

 

 

文章標籤
創作者介紹

Mazs's Notes

cookiesp 發表在 痞客邦 PIXNET 留言(0) 人氣()