Подтвердить что ты не робот

Android Material Design Datepicker с AppCompat

Я пытаюсь добавить новый Android 5.0 DatePicker для дизайна в приложение до 5.0, используя AppCompat. Я добавил

compile "com.android.support:appcompat-v7:21.0.0"

в файл build.gradle и обновил мою тему до:

<?xml version="1.0" encoding="utf-8"?>

  

<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>

но Datepicker все равно выглядит следующим образом:
old datepicker
И не так:
material design datepicker

Может ли кто-нибудь сказать мне, как заставить нового datepicker работать на устройствах с предварительным 5.0?

Спасибо заранее.

4b9b3361

Ответ 1

Update:

Как указано 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");

Конечный результат должен выглядеть следующим образом (извините за плохое качество).

AOSP Calendar Picker