web-dev-qa-db-fra.com

Android Datepicker Conception matérielle avec AppCompat

J'essaie d'ajouter le nouveau Android 5.0 Material Design Datepicker à mon application antérieure à la version 5.0 utilisant AppCompat. J'ai ajouté

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

dans mon fichier build.gradle et mis à jour mon thème pour:

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

mais le Datepicker ressemble toujours à ceci:
old datepicker
Et pas comme ça:
material design datepicker

Quelqu'un peut-il me dire comment faire fonctionner le nouveau datepicker sur des appareils antérieurs à la version 5.0?

Merci d'avance.

30
Androidicus

Mise à jour:

Comme le souligne jfcartier, il existe maintenant aussi MaterialDateTimePicker . C'est probablement une solution plus intéressante que celle ci-dessous, car elle dispose d'une API thématique Nice.


Vous pouvez essayer la bibliothèque Android-betterpickers . Il a un widget CalendarDatePickerDialog qui ressemble à celui que vous voulez. Il fournit un thème clair et sombre, mais pour personnaliser les couleurs, vous devez l’ajouter en tant que projet de bibliothèque et modifier le code vous-même.

L'utilisation est assez simple une fois que vous avez ajouté la bibliothèque à votre projet.

    // 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");

Le résultat final devrait ressembler à ceci (désolé pour la mauvaise qualité).

AOSP Calendar Picker

26
Fernanda Bari

J'ai aimé this bibliothèque. C'est un clone de Flavien Laurent Date Pick & Time avec quelques améliorations. Les deux sont basés sur sélecteur de date et d'heure officiel de Google pour Android 4.3 + mais adapté pour Android 2.1+.

0
mixel