2010-09-14 10 views
30

Sto scrivendo la mia prima app e ho una domanda su DatePicker.Calendario Android Visualizza per selezione data

La mia app richiede che l'utente inserisca una data. Il modo più user-friendly sarebbe quello di popup un widget calendario simile che visualizza il mese corrente come una griglia del calendario - qualcosa di simile:

enter image description here

voglio usare che al posto dell'interfaccia DatePicker - che contiene i campi Mese, Giorno e Anno, ciascuno con un pulsante su e giù per incrementare/decrementare.

Questo tipo di funzionalità è incorporato in qualsiasi widget o visualizzazione Android oppure dovrei progettare il mio componente personalizzato per farlo? Ho pensato che sarebbe già esistito, vedendo quanto questo tipo di interfaccia utente sia usato così frequentemente in app e pagine web non mobili.

Grazie!

+0

Potresti aggiornare la risposta selezionata a questa ricerca ione? Le persone possono essere fuorviati se non guardano tutte le risposte. Come indicato dalle risposte di altre persone, c'è un CalendarView in API di livello 11+. Grazie! – vosmith

risposta

11

Questo tipo di funzionalità è incorporato in qualsiasi widget o vista di Android o dovrei progettare il mio componente personalizzato> per farlo?

Non c'è alcun componente per questo nell'SDK Android, mi dispiace. Il widget che illustri è troppo piccolo per un touchscreen. È possibile implementare qualcosa di più grande (vedere l'app Calendario), ma si è in gran parte da soli per questo.

+1

puoi indicarmi il codice app del calendario? –

+8

Puoi fornire il link all'app Calendario che hai menzionato nella tua risposta .. – Nishant

4

trovato un buon Implementazione in http://caughtinthemobileweb.wordpress.com/2011/06/20/how-to-implement-calendarview-in-android/


anche dal livello di API 11 (Android 3.0) c'è è stata l'implementazione nativa del C alendarView http://developer.android.com/reference/android/widget/CalendarView.html

+0

+1 per aver menzionato la selezione data nativa. C'è anche il DatePickerDialog: http://developer.android.com/reference/android/app/DatePickerDialog.html –

+0

e qui c'è una grande riscrittura senza vista griglia: https://github.com/AtRow/CalendarView – Cfr

17

Ora, nel 2014, anche il nativo DatePicker (link) contiene piccole Holo cercando CalendarView (link) scegliere un giorno al mese.

È possibile scegliere, se entrambi i filatori e CalendarView o solo uno di essi viene visualizzato impostando:

  • android:calendarViewShown
  • android:spinnersShown

non sono sicuro se è solo livello di API 16+ o se fosse anche in Ice Cream Sandwich, ma è lì. Questo è come appare di default:

enter image description here


Inoltre, il livello di API 21 e più alto v'è un nuovo materiale a tema DatePicker che appare come segue:

enter image description here

Questo è predefinito su API 21+ e non ci sono più spinners, ma puoi tornare a quello di Holo impostando

android:datePickerMode="spinner" 

nel file XML.

+1

Provato per divertimento su ICS, sembra holo – Zharf

+0

@ aniim, grazie per il suggerimento datePickerMode! – user3855005

1

tenta di utilizzare questa componente: https://github.com/truefedex/android-date-picker enter image description here

Se si desidera utilizzarlo come pop-up di scrittura sul onclick:

if (calendarPopup == null) { 
    calendarPopup = new PopupWindow(getContext()); 
    CalendarPickerView calendarView = new CalendarPickerView(getContext()); 
    CalendarNumbersView calendar = (CalendarNumbersView) calendarView.findViewById(com.phlox.datepick.R.id.calendar); 
    calendar.setShowDayNames(false); 
    calendarView.setListener(onDateSelectionListener); 
    calendarPopup.setContentView(calendarView); 
    calendarPopup.setWindowLayoutMode(
     MeasureSpec.makeMeasureSpec(llCalendar.getWidth(), MeasureSpec.EXACTLY), 
     ViewGroup.LayoutParams.WRAP_CONTENT); 
    calendarPopup.setHeight(1); 
    calendarPopup.setWidth(llCalendar.getWidth()); 
    calendarPopup.setOutsideTouchable(true); 
} 
calendarPopup.showAsDropDown(llCalendar); 
Problemi correlati