Android 原生日期选择器弹框主题设置和起始日期设置

看效果(默认主题颜色)

修改主题颜色后

实现的代码:

  -----------------------可以设置到点击事件中,实现点击弹框----------------------

//调用时间选择器
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), R.style.MyDatePickerDialogTheme, onDateSetListener, mYear, mMonth, mDay);
//获取时间戳
long timeStamp = System.currentTimeMillis();
//设置可以显示的最晚的时间
datePickerDialog.getDatePicker().setMaxDate(timeStamp);
//弹框
datePickerDialog.show();

  

改变DatePickerDialog主题颜色步骤:

1、在values/style.xml新增:

 <style name="MyDatePickerDialogTheme" parent="@android:style/Theme.Holo.Light.Dialog">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:textColor">@color/red</item>
    </style>

2、在res下新建目录values-v21,新建style.xml文件,内容:

<color name="bgflow"> #3a3a3a</color>
<style name="MyDatePickerDialogTheme" parent="android:Theme.Material.Light.Dialog">
        <item name="android:colorPrimary">@color/bgflow</item>
        <item name="android:colorPrimaryDark">@color/bgflow</item>
        <item name="android:colorAccent">@color/bgflow</item>
    </style>

通过代码引用:

private int mYear;
private int mMonth;
private int mDay;


private void initData() {


       //获取当前时间
       Calendar ca = Calendar.getInstance();
       mYear = ca.get(Calendar.YEAR);
       mMonth = ca.get(Calendar.MONTH);
       mDay = ca.get(Calendar.DAY_OF_MONTH);

   }
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), R.style.MyDatePickerDialogTheme, onDateSetListener, mYear, mMonth, mDay);

-----------------------日期选择器对话框监听-------------------------

private DatePickerDialog.OnDateSetListener onDateSetListener = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            mYear = year;
            mMonth = monthOfYear;
            mDay = dayOfMonth;

            String days;
            if (mMonth + 1 < 10) {
                if (mDay < 10) {
                    days = new StringBuffer().append(mYear).append("-").append("0").
                            append(mMonth + 1).append("-").append("0").append(mDay).append("").toString();
                } else {
                    days = new StringBuffer().append(mYear).append("-").append("0").
                            append(mMonth + 1).append("-").append(mDay).append("").toString();
                }

            } else {
                if (mDay < 10) {
                    days = new StringBuffer().append(mYear).append("-").
                            append(mMonth + 1).append("-").append("0").append(mDay).append("").toString();
                } else {
                    days = new StringBuffer().append(mYear).append("-").
                            append(mMonth + 1).append("-").append(mDay).append("").toString();
                }

            }

            dataTv.setText(days);
        }
    };

-------------------------设置可以显示的起始日期--------------------------

//设置可以显示的最晚的时间
datePickerDialog.getDatePicker().setMaxDate(timeStamp);
//设置可以显示的最早的时间
datePickerDialog.getDatePicker().setMinDate(timeStamp); 

猜你喜欢

转载自blog.csdn.net/qq_40116418/article/details/84784593
今日推荐