2014-12-08 2 views
29

Sto cercando di aggiungere il nuovo Android 5.0 Material Design Datepicker alla mia applicazione pre 5.0 utilizzando AppCompat. Ho aggiuntoDatepicker di progettazione di materiali Android con AppCompat

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

al mio file build.gradle e aggiornato il mio tema di:

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

ma il Datepicker sembra ancora in questo modo:
old datepicker
E non in questo modo:
material design datepicker

Qualcuno può dirmi come far funzionare il nuovo DatePicker su dispositivi pre 5.0?

Grazie in anticipo.

+2

Non puoi a meno che non lo porti da solo ... – Selvin

+0

@ Silvin ic, grazie. Spinner, Checkbox, ecc. Funzionano con appcombat. la frammentazione androide sta diventando ridicola e fastidiosa. – Androidicus

+0

Non dovresti preoccuparti di questi dettagli ... Gli utenti di Android 5.0 non conoscono il nuovo selettore di date: -) ... Inoltre dovresti essere felice che la libreria compat esista e non devi preoccuparti di cose più importanti roba come frammenti, barra delle azioni .... – Selvin

risposta

26

Aggiornamento:

Come ben sottolineato dalla jfcartier, c'è ora anche MaterialDateTimePicker. Probabilmente è una soluzione migliore di quella qui sotto, poiché ha una bella API utilizzabile.


Si potrebbe provare la libreria android-betterpickers. Ha un widget CalendarDatePickerDialog che sembra quello che vuoi. Fornisce un tema chiaro e uno scuro, ma per personalizzare i colori devi aggiungerlo come progetto di libreria e cambiare il codice tu stesso.

L'utilizzo è piuttosto semplice una volta aggiunta la libreria al progetto.

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

Il risultato finale dovrebbe assomigliare a questo (mi dispiace per la scarsa qualità).

AOSP Calendar Picker

+27

C'è anche questa libreria -> https: // github.com/wdullaer/MaterialDateTimePicker – jfcartier

+0

Come possiamo impostare il nostro stile personalizzato su calederpickerdialog in questa libreria ?? Come possiamo cambiare i colori e tutto ?? Per favore aiuto. – Sajal

+0

@Sajal È necessario scaricare il codice sorgente e aggiungerlo come libreria al progetto. Quindi puoi personalizzare tutto ciò che vuoi attraverso il codice. Puoi anche provare a sovrascrivere colori e stili creando risorse con lo stesso nome nel tuo progetto, ma si tratta di un approccio più limitato. –