DatePickerDialog w Androidzie może przybrać dwie formy: jako kalendarz albo trzy dropdowny. Kalendarz już wykorzystałam, więc czas na użycie drugiej opcji 😉
Na początek dodałam dwa pola tekstowe, które będą służyć do zawężenia dat dla statystyk.
Docelowo planuję zrobić tam dropdowna, który będzie miał predefiniowane okresy czasu takie jak: rok, ubiegły miesiąc, pół roku, czy 'cała historia’. To na razie taka prowizorka żeby zobaczyć jak można stworzyć DatePickerDialog ale bez kalendarza. Kod tych pól tekstowych jest dość standardowy. Jedynym odstępstwem jest dodanie właściwości focusable=”false”, bo kiedy klikałam na datę czasem pojawiała się klawiatura.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<EditText | |
android:id="@+id/min_date" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:focusable="false" | |
android:inputType="date" | |
android:onClick="showDatePickerDialog"/> | |
<EditText | |
android:id="@+id/max_date" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:focusable="false" | |
android:inputType="date" | |
android:onClick="showDatePickerDialog"/> |
Po kliknięciu w datę pokazuje się edytor, gdzie można wybrać każdy ze składników daty osobno:
Najprostszym sposobem na stworzenie takiego edytora jest przekazanie stylu jako drugiego parametru konstruktora DatePickerDialogu:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void showDatePickerDialog(final View v) { | |
Calendar cal = Calendar.getInstance(); | |
DatePickerDialog datePickerDialog = new DatePickerDialog(v.getContext(), | |
android.R.style.Theme_Holo_Light_Dialog_MinWidth, | |
new DatePickerDialog.OnDateSetListener() { | |
@Override | |
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { | |
Calendar calendarInstance = Calendar.getInstance(); | |
calendarInstance.set(year, monthOfYear, dayOfMonth); | |
((EditText) v).setText(df.format(calendarInstance.getTime())); | |
} | |
}, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE)); | |
datePickerDialog.show(); | |
} |
Można stworzyć też ciemne okienko za pomocą stylu:
android.R.style.Theme_Holo_Dialog_MinWidth