使用AppCompat的Android Material Design Datepicker

And*_*cus 30 android datepicker android-appcompat material-design

我正在尝试使用AppCompat将新的Android 5.0 Material Design Datepicker添加到我的5.0之前的应用程序中.我已经添加

compile "com.android.support:appcompat-v7:21.0.0"
Run Code Online (Sandbox Code Playgroud)

到我的build.gradle文件并将我的主题更新为:

<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)

<style name="AppTheme.Base" parent="@style/Theme.AppCompat.Light">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
</style>
Run Code Online (Sandbox Code Playgroud)

但Datepicker仍然如下所示:
旧的datepicker
而不是这样的:
材料设计datepicker

任何人都可以告诉我如何让新的datepicker在5.0之前的设备上运行吗?

提前致谢.

Fer*_*ari 26

更新:

正如jfcartier所指出的,现在还有MaterialDateTimePicker.它可能是一个比下面更好的解决方案,因为它有一个很好的可用API.


你可以尝试android-betterpickers库.它有一个CalendarDatePickerDialog看起来像你想要的小部件.它提供了浅色和深色主题,但是为了自定义颜色,您必须将其添加为库项目并自行更改代码.

将库添加到项目后,用法非常简单.

    // Create date picker listener.
    CalendarDatePickerDialog.OnDateSetListener dateSetListener = new CalendarDatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(CalendarDatePickerDialog dialog, int year, int monthOfYear, int dayOfMonth) {
            // Set date from user input.
            Calendar date = Calendar.getInstance();
            date.set(Calendar.HOUR_OF_DAY, 9);
            date.set(Calendar.MINUTE, 0);
            date.set(Calendar.YEAR, year);
            date.set(Calendar.MONTH, monthOfYear);
            date.set(Calendar.DAY_OF_MONTH, dayOfMonth);

            // Do as you please with the date.
        }
    };

    // Create dismiss listener.
    CalendarDatePickerDialog.OnDialogDismissListener dismissListener = new CalendarDatePickerDialog.OnDialogDismissListener() {
        @Override
        public void onDialogDismiss(DialogInterface dialoginterface) {
            // Do something when the user dismisses the dialog.
        }
    };

    // Show date picker dialog.
    CalendarDatePickerDialog dialog = new CalendarDatePickerDialog();
    dialog.setOnDateSetListener(dateSetListener);
    dialog.setOnDismissListener(dismissListener);
    dialog.setThemeDark(false);
    dialog.show(getSupportFragmentManager(), "DATE_PICKER_TAG");
Run Code Online (Sandbox Code Playgroud)

最终结果应该是这样的(抱歉质量很差).

AOSP日历选择器

  • 还有这个库 - > https://github.com/wdullaer/MaterialDateTimePicker (27认同)