DatePickerDialog bez kalendarza – #27

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.

wp-1500362258509.

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.

<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:wp-1500363412895.

 

Najprostszym sposobem na stworzenie takiego edytora jest przekazanie stylu jako drugiego parametru konstruktora DatePickerDialogu:

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

wp-1500362285651.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

%d bloggers like this: