刚开始对于日历控件,我选择的是CalendarView,实现后发现它是一个类似于list view的万年日历,全屏显示并且可以滑动,可能不是很了解,其中有一个属性是ShowWeekCount用于设置显示多少周,但是这个方法在我的as环境下过时了,所以在功能上没有达到我的要求,于是就换成了DatePicker;下面来使用DatePicker,在布局中定义:
<DatePicker android:id="@+id/datepicker" android:layout_width="match_parent" android:calendarViewShown="true" android:layout_height="wrap_content"/>
然后在代码中设置当前日期时间,并且设置点击监听后在文本中显示,这里我使用的是v7包下的dialog显示,因为样式好看了很多:
private void initCalender() { final TextView tv_time = (TextView) findViewById(R.id.tv_time); tv_time.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final AlertDialog.Builder dialog = new AlertDialog.Builder(CalendarActivity.this); View calendarView = View.inflate(CalendarActivity.this,R.layout.doalog_calendar,null); DatePicker datepicker = (DatePicker)calendarView.findViewById(R.id.datepicker); Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); datepicker.init(year, month, day, new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { tv_time.setText(""+ year+"=="+ ++monthOfYear +"=="+dayOfMonth); } }); dialog.setView(calendarView); dialog.show(); } }); }
最后给出运行结果: