W widoku mam widżet EditText. Gdy użytkownik wybierze widżet EditText, wyświetlam kilka instrukcji i pojawia się klawiatura programowa.
Używam OnEditorActionListener, aby wykryć, kiedy użytkownik zakończył wprowadzanie tekstu, i zwalniam klawiaturę, ukrywam instrukcje i wykonuję jakąś akcję.
Mój problem polega na tym, że użytkownik odrzuca klawiaturę, naciskając klawisz BACK. System operacyjny odrzuca klawiaturę, ale moje instrukcje (które muszę ukryć) są nadal widoczne.
Próbowałem zastąpić OnKeyDown, ale to nie wydaje się być wywoływane, gdy przycisk WSTECZ jest używany do zwolnienia klawiatury.
Próbowałem ustawić OnKeyListener na widżecie EditText, ale to też nie wydaje się być wywoływane.
Jak mogę wykryć, że klawiatura programowa jest odrzucana?
onKeyPreIme
? A może jest jakiś szczególny powód, dla którego tak nie jest?SearchView
, odwiedź stackoverflow.com/questions/9629313/…Jay, twoje rozwiązanie jest dobre! dzięki :)
źródło
KeyEvent.ACTION_UP
?android.support.v7.widget.AppCompatEditText
do barwienia.AppCompatEditText
dla androidxDokonałem niewielkiej zmiany w rozwiązaniu Jaya, wywołując super.onKeyPreIme ():
Wspaniałe rozwiązanie, Jay, +1!
źródło
Oto mój niestandardowy tekst edycji do wykrywania, czy klawiatura jest wyświetlana, czy nie
źródło
Teraz jest rok 2019 ...
Więc stworzyłem zgrabniejsze rozwiązanie z Kotlinem
1. utwórz funkcję rozszerzenia:
2.Gdzie odbiornik przełączania:
3. Użyj go w dowolnej tak prostej aktywności :
źródło
Po prostu stwórz klasę, która rozszerza Edittext i użyj tego edittext w swoim kodzie, powinieneś po prostu zastąpić następującą metodę w niestandardowym edytorze:
źródło
Oto rozwiązanie z kluczem nasłuchującym. Nie mam pojęcia, dlaczego to działa, ale OnKeyListener działa, jeśli po prostu zastąpisz onKeyPreIme w niestandardowym EditText.
SomeClass.java
CustomEditText.java
źródło
Używając odpowiedzi @ olivier_sdg, ale przekonwertowanej na Kotlin:
Stosowanie:
źródło
Dla każdego, kto chce zrobić to samo w Xamarinie, przetłumaczyłem niektóre z najważniejszych odpowiedzi, ponieważ są one nieco inne. Stworzyłem tutaj sedno , ale podsumowując, tworzysz niestandardowy EditText i nadpisujesz w następujący
OnKeyPreIme
sposób:... a potem w widoku ...
źródło
hideSoftInputFromWindow
zwraca wartość true, gdy klawiatura zamyka się, użyj jej wartości, aby wykryć zamknięcie klawiatury w systemie Androidźródło