Chcę wyświetlić wyskakujące okienko datepicker. Znalazłem kilka przykładów, ale nie rozumiem tego poprawnie. Mam jeden tekst edytujący i chcę, aby po kliknięciu tekstu edycyjnego pojawiło się okno dialogowe datepicker, a po ustawieniu daty data powinna być wyświetlana w formacie edittext w formacie dd / mm / rrrr. Proszę, podaj mi przykładowy kod lub dobre linki.
android
android-datepicker
Surabhi Pandey
źródło
źródło
Odpowiedzi:
Wypróbuj to w pliku XML:
Teraz w pliku Java:
Teraz dodaj metodę do powyższego działania.
Dodaj
android:focusable="false"
w pliku xml EditText, aby umożliwić jedno dotknięcie.źródło
android:focusable="false"
ionclicklistner
android:longClickable="false"
. W przeciwnym razie użytkownik może wyświetlić opcję wklejania w polu (i w ten sposób wprowadzić nieprawidłowe daty).Nie udało mi się sprawić, by ktokolwiek z nich działał, więc dodam mój na wszelki wypadek.
Również coś, o czym nie wspomnieliśmy w innych. Upewnij się, że umieściłeś następujące polecenie na EditText xml.
W przeciwnym razie, podobnie jak w moim przypadku, klawiatura będzie się pojawiać. Mam nadzieję, że to komuś pomoże
źródło
źródło
Istnieje również inny lepszy sposób wielokrotnego użytku:
Utwórz klasę:
Następnie wywołaj tę klasę w funkcji onCreate:
źródło
class setDate implements View.OnFocusChangeListener, DatePickerDialog.OnDateSetListener {
?PLIK JAVA
źródło
Oto jak to robię: podobnie do wybranej odpowiedzi, ale przy użyciu statycznej klasy okna dialogowego, dzięki czemu jest bardziej wielokrotnego użytku, a także przy użyciu onFocusChange zamiast onClick.
I okno dialogowe datepicker.
źródło
Wybrana odpowiedź nie działała dla mnie całkiem dobrze, ponieważ musiałem stuknąć pole EditText raz, a następnie stuknąć je ponownie, zanim uruchomi się OnClickListener. Udało mi się to naprawić, zastępując OnClickListener OnTouchListener, na wypadek gdyby ktoś napotkał podobny problem, wygląda mój kod:
źródło
# 1. Chcę pokazać datepicker z bieżącą datą jako wybraną (używam maślanki do wstrzykiwań)
2. Jeśli chcesz wstępnie wybrać datę, zamień ostatnią część na
możesz go uzyskać za pomocą zmiennej myCalendar lub bezpośrednio tekstu w widoku.
źródło
Rozwiązanie wykorzystujące fragmenty, MvvmCross i Xamarin.Android
źródło
źródło
Moja klasa na pokaz
DatePicker
. Można używać doEditText
,TextView
lubButton
Za pomocą
źródło
Korzystanie z DataBinding:
(patrz
focusable
,inputType
ionClick
)Inside ViewModel:
źródło
Stosowanie:
źródło
Użyj tej prostej techniki, aby to zrobić:
Krok 1: UTWÓRZ DIALOG FRAGMENTU
Krok 2: POSTĘPUJ WYMAGANE DZIAŁANIA
Działanie musi implementować: DatePickerDialog.OnDateSetListener
Ustaw onClickListener na przycisku:
Krok 3: Zastąp OnDateSetListener
Dlatego możemy użyć dowolnego formatowania daty :)
źródło
Próbowałem wszystkich sposobów, które zostały zasugerowane, ale wszystkie mają własne problemy.
Moim zdaniem najlepszym rozwiązaniem byłoby użycie układu ramki takiego jak poniżej:
a następnie dodanie kodu DatePickerDialog, który został pięknie napisany w odpowiedzi na @ Android.
źródło
Pomyślałem, że lepiej zastąpić klasę EditText ...
I użyj tego w XML zamiast ...
źródło
źródło
Użyj tego
źródło
Port Kotlin, wywołaj funkcję setDatePicker
źródło
źródło
Spróbuj tego
źródło
editText.setOnClickListener (nowy View.OnClickListener () {
źródło
Okno wyboru daty
źródło
Spróbuj tego:
źródło
za pomocą tych instrukcji można również ustawić datę minimalną i datę maksymalną.
Uwaga: dodaj te linie przed datepickerDialog.show (); oświadczenie, że otrzymasz datę w ten sposób = 12/2/2017.
Mam nadzieję, że moja odpowiedź pomoże.
źródło
To zadziałało dla mnie w styczniu 2020 r
Część XML:
Część Java:
źródło
Oto funkcja rozszerzenia Kotlin:
Stosowanie:
W działaniu:
We fragmentach:
źródło
Moje rozwiązanie dla Xamarin.Android z MvvmCross na podstawie Linha:
W przypadku waniliowej wersji Xamarin.Android wystarczy zastąpić WeakSubscribe zwykłą subskrypcją zdarzenia Click w EditText, nie zapominając o anulowaniu subskrypcji w przypadku zastąpienia metody Dispose.
źródło