【问题标题】:Android Date Picker Material StyleAndroid 日期选择器材质样式
【发布时间】:2017-07-02 16:29:34
【问题描述】:

我已经在我的片段上实现了日期选择器,这是代码:

edittext_from.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View view) {
                    final Calendar c = Calendar.getInstance();
                    mYear = c.get(Calendar.YEAR);
                    mMonth = c.get(Calendar.MONTH);
                    mDay = c.get(Calendar.DAY_OF_MONTH);
                    android.app.DatePickerDialog datePickerDialog = new android.app.DatePickerDialog(getContext(),
                            new android.app.DatePickerDialog.OnDateSetListener() {

                                @Override
                                public void onDateSet(DatePicker view, int year,
                                                      int monthOfYear, int dayOfMonth) {

                                    edittext_from.setText(String.format("%04d-%02d-%02d", year, (monthOfYear + 1), dayOfMonth));

                                }
                            }, mYear, mMonth, mDay);
                    datePickerDialog.show();
                }


            });

我的日期选择器的风格是旧风格:

我想使用材质风格的 DatePicker,我尝试使用这个库编译'com.wdullaer:materialdatetimepicker:2.3.0',但结果是一样的。 有什么帮助我可以用 Material Date Picker 更改这个 DatePicker 吗? 谢谢

【问题讨论】:

  • 使用 appcpmpat 样式
  • 是的 Raktale 是对的,因为您在 5.0 以下使用,如果您想使用相同的结果,那么您应该使用 appCompat
  • @APPGIS 谢谢...

标签: android datepicker material-design material-components material-components-android


【解决方案1】:

通过Material Components for Android,您可以使用新的MaterialDatePicker

目前正在积极开发中,需要1.1.0版本的材料组件用于android库。

implementation 'com.google.android.material:material:1.1.0'

只需使用:

       MaterialDatePicker.Builder<Long> builder = MaterialDatePicker.Builder.datePicker();
       builder.setTitleText(R.string.your_text);
       MaterialDatePicker<Long> picker = builder.build();
       picker.show(getSupportFragmentManager(), picker.toString());

【讨论】:

  • 如何选择日期
【解决方案2】:

试试这个: Material DatePicker By Arsenal

如果有任何疑问,请查看我的 github 存储库

GitHUb:-https://github.com/rahulkushwaha482/DatePickerDialogFragment

先添加这个依赖

implementation('com.shagi:material-datepicker:1.3') {
        exclude group: 'com.android.support'
    }

添加互联网权限

This is required by this project.

1) 在 kotlin 中,使用以下代码:-

 val dialog = DatePickerFragmentDialog.newInstance({ view, year, monthOfYear, dayOfMonth ->
                Toast.makeText(applicationContext,
                        "year $year month $monthOfYear day $dayOfMonth",
                        Toast.LENGTH_SHORT).show()
            }, 2017, 11, 4)

            dialog.show(supportFragmentManager, "tag")

            /* Possible params
                dialog.setMaxDate(System.currentTimeMillis())
                dialog.setMinDate(System.currentTimeMillis())
                dialog.setYearRange(2000, 2010)
                dialog.setCancelColor(Color.MAGENTA)
                dialog.setOkColor(Color.MAGENTA)
                dialog.setAccentColor(Color.MAGENTA)
                dialog.setCancelText("Out")
                dialog.setOkText("Fine")
            */

2) 在 Java 中,使用以下代码:-

DatePickerFragmentDialog datePickerFragmentDialog=DatePickerFragmentDialog.newInstance(new DatePickerFragmentDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePickerFragmentDialog view, int year, int monthOfYear, int dayOfMonth) {
                txtTodayDate.setText(dayOfMonth + "/" + (monthOfYear + 1) + "/" + year);


            }
        },mYear, mMonth, mDay);
        datePickerFragmentDialog.show(getSupportFragmentManager(),null);
        datePickerFragmentDialog.setMaxDate(System.currentTimeMillis());
        datePickerFragmentDialog.setYearRange(1900,mYear);
        datePickerFragmentDialog.setCancelColor(getResources().getColor(R.color.colorPrimaryDark));
        datePickerFragmentDialog.setOkColor(getResources().getColor(R.color.colorPrimary));
        datePickerFragmentDialog.setAccentColor(getResources().getColor(R.color.colorAccent));
        datePickerFragmentDialog.setOkText(getResources().getString(R.string.ok_dob));
        datePickerFragmentDialog.setCancelText(getResources().getString(R.string.cancel_dob));

您的结果将如下所示:-

希望对您有所帮助,谢谢....

【讨论】:

    【解决方案3】:

    试试这个库: https://github.com/code-troopers/android-betterpickers

    您可以像这样使用日期选择器:

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DatePickerBuilder dpb = new DatePickerBuilder()
                    .setFragmentManager(getSupportFragmentManager())
                    .setStyleResId(R.style.BetterPickersDialogFragment)
                    .setYearOptional(true);
            dpb.show();
        }
    });
    

    【讨论】:

    • 我已经尝试过这个库,但显示的是日期选择器按钮图像而不是日历。我如何将日历设置为片段
    【解决方案4】:

    试试这个就行了

    repositories{
        maven {
            url "https://jitpack.io"
        }
    }
    
    dependencies {
        compile 'com.github.jaydeep17:datetimepicker:0.0.4'
    }
    

    https://github.com/jaydp17/datetimepicker

    https://github.com/flavienlaurent/datetimepicker

    http://www.viralandroid.com/2015/11/android-date-picker-example.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-17
      • 1970-01-01
      • 2020-12-10
      • 2021-11-04
      • 1970-01-01
      • 2020-08-30
      • 1970-01-01
      相关资源
      最近更新 更多