1.年月日的日期选择(使用DatePickerDialog)
(1)private Calendar mycalendar;
private int year, month, day;
mycalendar = Calendar.getInstance();
year = mycalendar.get(Calendar.YEAR); //获取Calendar对象中的年
month = mycalendar.get(Calendar.MONTH);//获取Calendar对象中的月
day = mycalendar.get(Calendar.DAY_OF_MONTH);//获取这个月的第几天
(2)DatePickerDialog dpd = new DatePickerDialog(mContext, Datelistener, year, month, day);
dpd.show();
(3)private DatePickerDialog.OnDateSetListener Datelistener = new DatePickerDialog.OnDateSetListener() {
/**params:view:该事件关联的组件
* params:myyear:当前选择的年
* params:monthOfYear:当前选择的月
* params:dayOfMonth:当前选择的日
*/
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
}
};
2.年月的日期选择(还是使用DatePickerDialog,隐藏日,只显示年月)
在onDateChanged中设置选择器的标题,获取到选择的年月。
//int yy日期选择条要展示的年,int mm要展示的月(即展开日期选择器时,上面展示的被选中的年月)
private void showDatePickerDia(final int yy,final int mm) {
final Calendar calendar = Calendar.getInstance();
int dd = 1;
DatePickerDialog dlg = new DatePickerDialog(new ContextThemeWrapper(getActivity(),
android.R.style.Theme_Holo_Light_Dialog_NoActionBar), null, yy, mm-1, dd) {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout mSpinners = (LinearLayout) findViewById(getContext().getResources().getIdentifier("android:id/pickers", null, null));
if (mSpinners != null) {
NumberPicker mMonthSpinner = (NumberPicker) findViewById(getContext().getResources().getIdentifier("android:id/month", null, null));
NumberPicker mYearSpinner = (NumberPicker) findViewById(getContext().getResources().getIdentifier("android:id/year", null, null));
mSpinners.removeAllViews();
if (mMonthSpinner != null) {
mSpinners.addView(mMonthSpinner);
}
if (mYearSpinner != null) {
mSpinners.addView(mYearSpinner);
}
}
//隐藏日
View dayPickerView = findViewById(getContext().getResources().getIdentifier("android:id/day", null, null));
if (dayPickerView != null) {
dayPickerView.setVisibility(View.GONE);
}
}
@Override
public void onDateChanged(DatePicker view, int year, int month, int day) {
super.onDateChanged(view, year, month, day);
//设置日期选择器的标题
setTitle(resources.getString(R.string.date_title_selecy_yearmonth));
Logger.print(TAG,"---->year:"+year+" month:"+month+" day:"+day);
setDate(year,month,1);//处理事件,setDate方法可以随便自己定义
}
};
dlg.setTitle(resources.getString(R.string.date_title_selecy_yearmonth));
dlg.show();
}