标签: android-datepicker

为materialDatePicker 设置 180 天的日历约束

我使用MaterialDatePicker的是 Android (Kotlin),需要确保开始日期和结束日期相距不超过 180 天。我该如何编写这个约束?

android android-datepicker kotlin material-components-android

8
推荐指数
1
解决办法
2525
查看次数

Android将DatePicker设置为特定日期

我有3个包含日,月和年值的字符串.例如:

String mday = "02";
String mmonth="07";
String myear="2013";
Run Code Online (Sandbox Code Playgroud)

我需要将活动中的DatePicker设置为从上面的日期开始的一个月.我并不是说只是将1加到mmonth值......如果是第31天,我最终会得到一个无效的日期.所以我需要一些方法来增加日期(有效的方式)并设置DatePicker的值.我知道使用Int值设置datePicker是这样的:

DatePicker datepicker = (DatePicker) findViewById(R.id.datePicker1); 
datepicker.init(iYear, iMonth, iDay, null); 
// where iYear,iMonth and iDay are integers
Run Code Online (Sandbox Code Playgroud)

但是如何获得递增DATE的日,月和年的整数值一个月?

那么在第一个值(字符串)和递增日期的最终值(整数)之间我必须做出哪些步骤?

我想我必须使用日历.所以我的代码应该是这样的:

Integer iYear, iMonth, iDay = 0;
String mday = "02";
String mmonth="07";
String myear="2013";

Calendar cal = Calendar.getInstance();
cal.set(Integer.parseInt(myear), Integer.parseInt(mmonth), Integer.parseInt(mday));
cal.add(Calendar.MONTH, 1);
// here I should get the values from cal inside the iYear, iMonth, iDay, but I do not seem to succeed.

DatePicker datepicker = (DatePicker) findViewById(R.id.datePicker1); 
datepicker.init(iYear, iMonth, …
Run Code Online (Sandbox Code Playgroud)

android android-datepicker

7
推荐指数
2
解决办法
3万
查看次数

如何更改Android中的数字选择器中心文本颜色

我已经实现了一个自定义日期选择器,其中我需要为其中的数字选择器(日期选择器使用数字选择器)提供自定义颜色,如下所示: 预期

这个答案的帮助下,我可以看起来像这样: 实际结果

但正如您所看到的那样,实际日期会以黄色而不是白色显示.而且,我尝试在运行时这样做:

npMonth.setOnValueChangedListener(new OnValueChangeListener() {

            @Override
            public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
                EditText et = ((EditText) npMonth.getChildAt(0));
                et.setTextColor(getResources().getColor(R.color.gold));
            }
        });
Run Code Online (Sandbox Code Playgroud)

但仍然没有运气.

如何将中心文本颜色更改为白色并将顶部和底部文本保持为黄色?

android android-datepicker numberpicker

7
推荐指数
1
解决办法
5535
查看次数

如何防止在DatePickerDialog中选择传递日期(setMinDate无法按预期工作)

我发现DatePicker(Dialog)非常令人困惑......当设置setMinDate()时...显示的日历真的"视觉上禁用"传递日期(使它们变灰)但这些日期仍然可供选择!我想用户阻止这样做.理想的方法是使通过的日期不可点击/不可选.如果不可能,至少要抓住这个事件(哪一个?onDateChanged?,onSelected?...)并保留一条消息并禁用OK按钮,直到用户选择一个有效的日期.

不幸的是,datepicker(对话框)没有onChangedListener(实际上它有但没有setter).所以我得到的唯一事件是按下OK按钮.为时已晚.

这是我的代码

    dateTextView = (TextView) view.findViewById(R.id.createOrder_date);
    dateTextView.setText(R.string.createOrder_time_now);
    dateTextView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            final Calendar calendarNow = Calendar.getInstance();
            final int yearNow = calendarNow.get(Calendar.YEAR);
            final int monthNow = calendarNow.get(Calendar.MONTH);
            final int dayNow = calendarNow.get(Calendar.DAY_OF_MONTH);

            DatePickerDialog datePickerDialog = new DatePickerDialog(CreateOrderFragment.this.getActivity(), new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                    Calendar calendar = Calendar.getInstance();
                    calendar.set(year, monthOfYear, dayOfMonth);

                    if (calendar.before(calendarNow)) {
                        Toast.makeText(CreateOrderFragment.this.getActivity(), getResources().getString(R.string.createOrder_datePicker_selectFutureDate), Toast.LENGTH_SHORT).show();
                        view.updateDate(yearNow, monthNow, dayNow);
                        calendar = calendarNow;
                    }

                    SimpleDateFormat sdf = …
Run Code Online (Sandbox Code Playgroud)

android android-datepicker datepickerdialog android-5.0-lollipop

7
推荐指数
1
解决办法
2500
查看次数

如何在"日期选择器"对话框中设置日期限制

我想在日期上设置限制,以便用户不能选择更多的日期,例如,如果今天是1月1日那么用户不应该选择7个以上的日期,我的意思是他不能选择1月9日.我也希望他不要选择月份和年份.所以我在一周内限制他的任务.

到目前为止我所做的是显示日期选择器片段并在其中设置当前日期.我的主要活动中的代码如下:

etSelectDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment datePickerFragment = new DatePickerFragment() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int day) {
                        Log.d("Date Change", "onDateSet");
                        Calendar c = Calendar.getInstance();
                        c.set(year, month, day);
                        DateFormat df = DateFormat.getDateInstance();
                        etSelectDate.setText(df.format(c.getTime()));
                        //nextField.requestFocus(); //moves the focus to something else after dialog is closed

                    }
                };
                datePickerFragment.show(MainActivity.this.getSupportFragmentManager(), "datePicker");

            }
        });
Run Code Online (Sandbox Code Playgroud)

和日期选择器片段类如下所示:

 public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            // Use the current …
Run Code Online (Sandbox Code Playgroud)

android android-datepicker

7
推荐指数
2
解决办法
2万
查看次数

如何在Android日期选择器对话框中禁用某些日期?

我使用的默认Android DatePickerDialog包含android.widget.DatePicker.

有人知道如何禁用或使某些日期无法选择吗?

我知道DatePicker允许setMinDate(),setMaxDate()但它不允许在中间禁用特定日期.

例如,在这张照片上想要禁用日期18,26等:

在此输入图像描述

android android-datepicker datepickerdialog

7
推荐指数
1
解决办法
6978
查看次数

禁用星期日和任何其他特定日期

我想在android日期选择器中的特定月份禁用星期日和特定日期

我使用的Datepicker是android datepicker:

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 1);
calendar.setMinimalDaysInFirstWeek(27);
// calendar.add(Calendar.DAY_OF_MONTH, 1);
//calendar.set(2016,11,23);
// new   DatePickerDialog(LoginSuccess.this, listener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show();
DatePickerDialog dpDialog = new DatePickerDialog(LoginSuccess.this, listener, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
// dpDialog.updateDate(2016,11,23);

DatePicker datePicker = dpDialog.getDatePicker();
//datePicker.updateDate(2016,11,23);
// Date newDate = calendar.getTime();
//dpDialog.getDatePicker().setMinDate(newDate.getTime());
//datePicker.init();

if (calendar.get(Calendar.DAY_OF_MONTH)==Calendar.SUNDAY) {
   // dpDialog.setTitle("Sorry Sundays wont be accepted");
   // dpDialog.setMessage("not selected");
   // dpDialog.show();
    //datePicker.setBackgroundColor(000000);
    Color.parseColor("#000000");
}
else {
    long now = System.currentTimeMillis();

    datePicker.setFirstDayOfWeek(Calendar.MONDAY);
    datePicker.setMinDate(now + (1000 * 60 * 60 * 24 * 1)); …
Run Code Online (Sandbox Code Playgroud)

java android-datepicker

7
推荐指数
1
解决办法
2408
查看次数

android 致命异常:打开 DatePickerDialog 时出现 java.lang.NullPointerException

单击时我有一个 EditText,它应该打开 DatePickerDialog。但在某些设备中,它会随机崩溃。在 Crashlytics 中,它显示它在一些 android 版本 8 和一些版本 9 的设备中崩溃。请告诉我我做错了什么。

对于 DatePicker,我正在设置用户可以选择的最小和最大日期。

DatePickerDialog dialog = new DatePickerDialog(mContext, date, myCalendar
                    .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                    myCalendar.get(Calendar.DAY_OF_MONTH));

            SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
            inputFormat.setTimeZone(TimeZone.getTimeZone("IST"));
            Date date = new Date();
            try {
                date = inputFormat.parse("2019-01-13T13:00:00Z"); // this is getting from server
            } catch (ParseException e) {
                e.printStackTrace();
            }

            Calendar minCal = Calendar.getInstance();
            minCal.setTime(date);
            dialog.getDatePicker().setMinDate(minCal.getTimeInMillis());
            dialog.getDatePicker().setMaxDate(System.currentTimeMillis());
            // dialog.getDatePicker().setCalendarViewShown(false);
            dialog.show();
Run Code Online (Sandbox Code Playgroud)

这是我收到的崩溃消息。

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.SimpleMonthView.getMonthHeight()' on a null object reference
       at android.widget.DayPickerView.onLayout(DayPickerView.java:230) …
Run Code Online (Sandbox Code Playgroud)

android android-datepicker datepickerdialog

7
推荐指数
1
解决办法
1997
查看次数

datepicker的风格与活动不同

我有自定义样式的活动,我希望我的活动有一个自定义标题栏,所以我创建了以下样式:

<style name="costum_titlebar">
    <item name="android:background">@color/titlebar_background</item>
</style>

<style name="CustomTheme" parent="android:Theme">
    <item name="android:windowTitleSize">@dimen/titlebar_size</item>
    <item name="android:windowTitleBackgroundStyle">@style/costum_titlebar</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在清单中我使用:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/CustomTheme" >
Run Code Online (Sandbox Code Playgroud)

在我使用的活动中:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
this.getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.setting_activity_titlebar);
Run Code Online (Sandbox Code Playgroud)

到目前为止它很好并且工作正常,我有自定义标题栏的活动.
现在我想使用datePickerDialog.问题是对话框看起来很旧:

在此输入图像描述

但我希望它看起来像这样:

在此输入图像描述

我也有这种风格:

<style name="AppBaseTheme" parent="android:Theme.Light">
Run Code Online (Sandbox Code Playgroud)

所以我用它来创建DatePickerDialog,如下所示:

new DatePickerDialog(getActivity(),R.style.AppBaseTheme, this, year, month, day);
Run Code Online (Sandbox Code Playgroud)

但主题不适用.

只是为了测试,我创建了一个默认样式的第二个应用程序,只有一个按钮来打开日期选择器,所以datepicker看起来像我想要的.两个应用都有android:minSdkVersion="8"

我认为问题出在自定义标题栏上,那么我如何才能获得所需风格的自定义标题栏和日期选择器呢?

编辑:

我改变android:minSdkVersion="11"

<style name="datePickerTheme" parent="@android:style/Widget.Holo.DatePicker"></style>

new DatePickerDialog(getActivity(),R.style.datePickerTheme, this, year, month, day);

但结果仍然是一样的.

android android-datepicker android-theme android-styles

6
推荐指数
3
解决办法
3万
查看次数

无法让Android DatePickerDialog切换到Spinner模式

我正在构建一个使用DatePickerDialog的应用程序,允许用户选择他们的生日.这是现在加载对话框的代码:

private void selectBirthdate() {
    int year, month, day;
    if (mBirthDate == null) {
        year = DEF_YEAR;
        month = DEF_MON;
        day = DEF_DAY;
    }
    else {
        year = mBirthDate.get(Calendar.YEAR);
        month = mBirthDate.get(Calendar.MONTH);
        day = mBirthDate.get(Calendar.DAY_OF_MONTH);
    }
    new DatePickerDialog(
            getActivity(),
            new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
                    mBirthDate = new GregorianCalendar();
                    mBirthDate.set(Calendar.YEAR, year);
                    mBirthDate.set(Calendar.MONTH, month);
                    mBirthDate.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                    if (mTxtBirthDate != null) {
                        mTxtBirthDate.setText(mBirthDateFormat.format(mBirthDate.getTime()));
                    }
                }
            },
            year,
            month,
            day
    ).show();
}
Run Code Online (Sandbox Code Playgroud)

这是我加载对话框时的样子: 原始对话

但是,他们希望能够使用旧式微调器DatePicker,因为在新的日历视图中,用户并不总是可以更改年份.所以我一直在研究这个主题,根据我读过的内容,应该可以使用主题强制DatePickerDialog进入Spinner模式.所以这就是我所做的. …

android android-datepicker android-alertdialog android-styles

6
推荐指数
2
解决办法
3833
查看次数