闲话不多说先来看效果
先来说一下DatePicker的一些基本属性的设置:
android:calendarViewShown="false" 是否显示日历视图
android:firstDayOfWeek="" 设置日历星期第一天是哪一天
android:headerBackground="@color/gray" 头部的背景颜色android:endYear="2100" 最后一年,例如2100
android:maxDate="12/31/2100" 日历视图的最大日期,格式为mm/dd/yyyyandroid:minDate="01/01/1900" 日历视图的最小日期,格式为mm/dd/yyyyandroid:spinnersShown="false" 是否显示下拉菜单
android:startYear="1940" 从哪一年开始 例如1940
android:calendarTextColor="@color/white"日历的列表文字颜色(Api 21 以上才能用)
android:datePickerMode="calendar" 定义部件的外观,有spinner和calendar两种选择(Api 21 以上才能用)android:dayOfWeekBackground="@color/gray" 头部的星期的背景颜色(Api 21 以上才能用)android:dayOfWeekTextAppearance="@color/gray" 头部的星期的文字外观(Api 21 以上才能用)android:headerDayOfMonthTextAppearance="@color/white" 头部对应 号数 的文字外观(Api 21 以上才能用)android:headerMonthTextAppearance="@color/white"头部对应 月份 的文字外观(Api 21 以上才能用)
android:headerYearTextAppearance="@color/white" 头部对应 年份 的文字外观(Api 21 以上才能用)
android:yearListItemTextAppearance="@color/white" 选择年的列表的文字外观(Api 21 以上才能用)android:yearListSelectorColor="@color/gray" 选择年的列表中选中的颜色(Api 21 以上才能用)献上代码:1,先讲DatePicker引入:在app/build.gradle中加入:compile 'cn.aigestudio.datepicker:DatePicker:2.2.0'
2,在布局中引入:<cn.aigestudio.datepicker.views.DatePicker android:id="@+id/dataPicker" android:layout_width="match_parent" android:layout_height="match_parent" />
3,代码中实现基本功能:要注意的是:public class MainActivity extends AppCompatActivity { @Bind(R.id.dataPicker) DatePicker dataPicker; private int year; private int month; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); Calendar calendar = Calendar.getInstance(); year = calendar.get(Calendar.YEAR); month = calendar.get(Calendar.MONTH); dataPicker.setDate(year, month+1); dataPicker.setMode(DPMode.SINGLE); dataPicker.setOnDatePickedListener(new DatePicker.OnDatePickedListener() { @Override public void onDatePicked(String date) { AlertDialog dialog = new AlertDialog.Builder(MainActivity.this).create(); dialog.show(); String[] split = date.split("-"); DatePicker datePicker = new DatePicker(MainActivity.this); int year=Integer.valueOf(split[0]); int month=Integer.valueOf(split[1]); datePicker.setDate(year,month); datePicker.setMode(DPMode.SINGLE); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); dialog.getWindow().setContentView(datePicker,params); dialog.getWindow().setGravity(Gravity.CENTER); } }); }
1,Calendar取出的系统日期月份是从零开始算起的,所以要+1才是当前真实的月份;
2,DatePicker初始化是必须设置初始值,否则闪退;