Mam Activity
z EditText
, przycisk i ListView
. Celem jest wpisanie ekranu wyszukiwania w EditText
, naciśnięcie przycisku, a wyniki wyszukiwania zapełnią tę listę.
To wszystko działa idealnie, ale klawiatura wirtualna zachowuje się dziwnie.
Jeśli kliknę EditText
, otrzymam wirtualną klawiaturę. Jeśli kliknę przycisk „Gotowe” na wirtualnej klawiaturze, zniknie. Jeśli jednak kliknę przycisk wyszukiwania przed kliknięciem przycisku „Gotowe” na klawiaturze wirtualnej, klawiatura wirtualna pozostanie i nie mogę się jej pozbyć. Kliknięcie przycisku „Gotowe” nie zamyka klawiatury. Zmienia przycisk „Gotowe” z „Gotowe” na strzałkę i pozostaje widoczny.
Dzięki za pomoc
źródło
inputManager.hideSoftInputFromWindow((null == getCurrentFocus()) ? null : getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
źródło
Użyj poniższego kodu
źródło
Powinieneś zaimplementować
OnEditorActionListener
dla swojego EditViewI ukrywasz klawiaturę przez:
Powinieneś także odpalić klawiaturę ukrywającą się w twoim przycisku za pomocą
onClickListener
Teraz kliknięcie „Gotowe” na wirtualnej klawiaturze i przycisku zrobi to samo - ukryj klawiaturę i wykonaj kliknięcie.
źródło
TextView.OnEditorActionListener
.Dodaj następujący kod do zdarzenia kliknięcia przycisku:
źródło
Ponieważ masz tylko jeden tekst edycji, po prostu wywołaj akcję wykonaną dla tego tekstu w kliknięciu przycisku, a reszta jest obsługiwana przez system. Gdybyś miał więcej niż jeden plik edittext, nie byłby to tak efektywny, ponieważ najpierw musisz pobrać skoncentrowany plik edittext. Ale w twoim przypadku zadziała idealnie
źródło
Aktywność,
W przypadku fragmentów użyj metody getActivity ()
getActivity (). getSystemService ();
getActivity (), getCurrentFocus ();
źródło
U mnie to rozwiązanie działa idealnie:
źródło
Spróbuj tego...
Do pokazania klawiatury
Ukryj klawiaturę
źródło
źródło
Przykład Kotlina:
z fragmentu:
z Aktywności:
źródło
Używasz tego kodu w przypadku kliknięcia przycisku
źródło
Poprawka wyjątku awarii punktu zerowego: miałem przypadek, w którym klawiatura mogła się nie otwierać, gdy użytkownik kliknął przycisk. Musisz napisać instrukcję if, aby sprawdzić, czy getCurrentFocus () nie jest wartością null:
źródło
Jeśli ustawisz
android:singleLine="true"
, przycisk automatycznie ukrywa klawiaturę¡źródło