Gdy użytkownik kliknie przycisk EditView
, system Android otwiera klawiaturę, aby użytkownik mógł pisać w EditView
.
Problem polega na tym, że gdy użytkownik skończy pisać, nie ma możliwości ukrycia klawiatury. Użytkownik musi nacisnąć przycisk Wstecz, aby ukryć klawiaturę.
Czy istnieje sposób, aby wyświetlić Done
przycisk na klawiaturze, który ukryje klawiaturę?
Odpowiedzi:
Użyj TextView.setImeOptions i przekaż actionDone. lubić
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
źródło
textView.setImeOptions(EditorInfo.IME_ACTION_DONE);
textView.singleLine(true)
aby to działało programowo.Najpierw musisz ustawić
android:imeOptions
atrybut równyactionDone
dla docelowego tekstu edycji, jak pokazano poniżej. Spowoduje to zmianę przycisku „RETURN” na klawiaturze ekranowej EditText na przycisk „DONE”.źródło
android:singleLine="true"
aby to działało przez xmlUwzględnij zarówno
imeOptions
isingleLine
:źródło
W pliku XML działa dobrze. Ale spowoduje to również, że
editText
będzie kontynuował pisanie w jednej linii, czego możesz nie chcieć. Więc dodanie następującego kodu do kodu zapewni, że nie skończysz wpisywać wszystkiego w jednym wierszu.źródło
Za ukończenie Button
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
i
android:inputType="text"
w pliku xmlDo obsługi po kliknięciu z klawiatury
`
źródło
Użyj tego:
źródło
actionDone
tam również, na wypadek gdyby niektóre urządzenia reagowały inaczej.Użyj tych dwóch linii do swojego
EditText
lub możesz to osiągnąć programowo za pomocą tej linii.
źródło
Jeśli właściwość widżetu nie zmienia się, lepiej będzie użyć go tak, jak
android:imeOptions="actionDone"
wxml
pliku układu .źródło
Posługiwać się:
źródło
Kod:
źródło
ActionDone jest używane po kliknięciu następnego przycisku na klawiaturze, w którym klawiatura jest ukryta.
XML
1.1 Jeśli używasz AppCompatEdittext
1.2 Jeśli używasz Edittext
JAWA
źródło
Muszę to zaznaczyć, ponieważ wiele osób może się z tym zmagać, nie znając problemu.
Jeśli chcesz, aby kb ukrywał się po kliknięciu
Done
, a ustawiszandroid:imeOptions="actionDone"
&android:maxLines="1"
bez ustawiania tekstu edycjiinputType
, NIE będzie on działać jako domyślnyinputType
dla tekstu edycji, nie jest tak,"text"
jak myśli wiele osób.tak, tylko ustawienie
inputType
daje pożądane rezultaty niezależnie od tego, czego ustawienie go lubić"text"
,"number"
... etc.źródło
Właściwie możesz ustawić niestandardowy tekst na ten mały niebieski przycisk. W pliku xml po prostu użyj
w Twoim EditText.
Lub w użyciu pliku java
Dowolnie wybieram IME_ACTION_DONE jako przykład tego, co powinno znaleźć się w drugim parametrze tej funkcji. Pełną listę tych działań można znaleźć tutaj .
Należy zauważyć, że nie spowoduje to pojawienia się tekstu na wszystkich klawiaturach na wszystkich urządzeniach. Niektóre klawiatury nie obsługują tekstu na tym przycisku (np. Klawisz swift). Niektóre urządzenia też go nie obsługują. Dobra zasada jest taka, że jeśli zobaczysz tekst już na przycisku, zmieni to na cokolwiek chcesz.
źródło
Rozwiązanie Kotlin
Bezpośrednim sposobem obsługi ukrywania klawiatury + wykonanej akcji w Kotlin jest:
Rozszerzenie Kotlin
Użyj tego, aby wywołać
edittext.onDone {/*action*/}
swój główny kod. Sprawia, że jest bardziej czytelny i łatwy w utrzymaniuDodatkowe rozszerzenia klawiatury
Jeśli chcesz uzyskać więcej sposobów na uproszczenie pracy z klawiaturą (pokaż, zamknij, zaznacz): Przeczytaj ten wpis
źródło
użyj tego w swoim przekonaniu
źródło
Jeśli używasz
to musisz użyć
tylko wtedy możesz zobaczyć przycisk Wykonano akcję na klawiaturze.
źródło
Jeśli w ogóle nie chcesz żadnego przycisku (np. Tworzysz GUI dla niewidomych, w którym dotknięcie nie może być pozycyjne i polegasz na dotknięciach pojedynczych / podwójnych / długich):
Lub w Kotlinie:
źródło