W mojej aplikacji na Androida mam inne miejsce, w EditText
którym użytkownik może wprowadzać informacje. Ale muszę zmusić użytkownika do pisania wielkimi literami. Czy znasz funkcję, która to robi?
android
android-edittext
uppercase
Natacha
źródło
źródło
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
jednak.maxLength
), Starają się dołączyćInputFilter.AllCaps()
doeditText.getFilters
tablicy. Zobacz stackoverflow.com/a/18934659/3890983editText.filters = editText.filters + InputFilter.AllCaps()
editText.filters += InputFilter.AllCaps()
Kotlin jest cudowny! <3Jeśli chcesz
zmusić użytkownika do pisaniawielkimi literami domyślnie w EditText, wystarczy dodaćandroid:inputType="textCapCharacters"
. (Użytkownik nadal może ręcznie zmienić na małe litery).źródło
Ustaw
input type
naTYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS
.keyboard
Powinien szanować to.źródło
Możesz użyć na dwa sposoby.
Pierwszy sposób:
Ustaw
android:inputType="textCapSentences"
w EditText.Drugi sposób:
Kiedy użytkownik wprowadza numer, musisz użyć obserwatora tekstu i zmienić małą na wielką literę.
źródło
Możesz dodać
android:textAllCaps="true"
właściwość do pliku xml w EditText. Spowoduje to wymuszenie wyświetlania klawiatury miękkiej w trybie wielkich liter. Wprowadzona wartość pojawi się wielkimi literami. Nie zapewni to jednak, że użytkownik będzie mógł wprowadzać tylkoUpperCase
literami. Jeśli chcą, nadal mogą wrócić do małych liter. Jeśli chcesz mieć pewność, że dane wyjścioweEdittext
są w All Caps, musisz ręcznie przekonwertować wejściowy ciąg przy użyciutoUpperCase()
metodyString
class.źródło
android:textAllCaps="true"
jest tylko właściwością TextView ( stackoverflow.com/a/28803492/5268730 ). Użyjandroid:inputType="textCapCharacters"
zamiast tego.Powinieneś umieścić
android:inputType="textCapCharacters"
Edittext w pliku xml.źródło
Zamiast martwić się o obsługę klawiatury, dlaczego po prostu nie zaakceptować wprowadzenia, małych lub wielkich liter i nie przekonwertować ciągu na duże?
Poniższy kod powinien pomóc:
Jest to przyjazne dla użytkownika, ponieważ użytkownik nie musi wiedzieć, że potrzebujesz napisu wielkimi literami. Mam nadzieję że to pomoże.
źródło
Jeszcze lepiej ... jeden liniowiec w Kotlinie ...
Gotowe!
źródło
<your_edit_text>.filters = <your_edit_text>.filters + InputFilter.AllCaps()
<your_edit_text>.filters += InputFilter.AllCaps()
W kotlin , w pliku .kt wprowadź zmiany:
Użyj właściwości syntetycznej, aby uzyskać bezpośredni dostęp do widgetu o identyfikatorze. A w XML, do tekstu edycji dodaj kilka dodatkowych flag, takich jak:
Spowoduje to zaktualizowanie klawiatury z włączoną obsługą wielkich liter.
źródło
Użyj filtra wejściowego
źródło
źródło
Po prostu zrób to:
źródło
Spróbuj użyć dowolnego z poniższych kodów, aby rozwiązać problem.
programowo:
XML:
źródło
U mnie zadziałało, dodając android: textAllCaps = "true" i android: inputType = "textCapCharacters"
źródło
Aby uzyskać cały kapitał, użyj w swoim kodzie XML:
źródło
wypróbuj ten kod, a wprowadzone dane będą pisane wielkimi literami
źródło
Na podstawie zaakceptowanej odpowiedzi ta odpowiedź robi to samo, ale w Kotlinie. Żeby ułatwić copypasting: ·)
źródło
filters += InputFilter.AllCaps()
: DAby uzyskać klawiaturę pisaną wielkimi literami po kliknięciu edittext, użyj tego kodu w swoim xml,
źródło
Używam programu Visual Studio 2015 / Xamarin do tworzenia mojej aplikacji dla systemu Android 5.1 i Android 6.0 (ten sam plik APK jest zainstalowany na obu).
Kiedy
android:inputType="textCapCharacters"
podałem w moim axml, klawiatura AllCaps pojawiła się zgodnie z oczekiwaniami w systemie Android 6.0, ale nie w systemie Android 5.1. Dodałemandroid:textAllCaps="true"
do mojego axml i nadal nie mam klawiatury AllCaps na Androidzie 5.1.EditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
Ustawiłem filtr za pomocą i podczas gdy klawiatura programowa wyświetla małe litery w systemie Android 5.1, pole wprowadzania to teraz AllCaps.EDYCJA: Różnice behawioralne, które zaobserwowałem i założyłem, że są związane z systemem operacyjnym, były w rzeczywistości spowodowane tym, że miałem różne wersje Klawiatury Google na urządzeniach testowych. Po zaktualizowaniu urządzeń do najnowszej klawiatury Google (wydanej w lipcu 2016 r. W chwili pisania tego tekstu) zachowanie „All Caps” było spójne we wszystkich systemach operacyjnych. Teraz wszystkie urządzenia wyświetlają małe litery na klawiaturze, ale wejście to wielkie litery z powodu
SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
źródło
Xamarin odpowiednik odpowiedzi ErlVolton:
źródło
Prosta realizacja kotlina
PS dla mnie
filters
jest zawsze początkowo pustyźródło
Jedną linią Java proponowanego rozwiązania może być:
Zauważ, że potrzebuje
com.google.common.collect.Lists
.źródło
Po prostu dodaj poniższy kod do EditText swojego pliku xml.
A jeśli chcesz zezwolić zarówno na wielkie litery, jak i cyfry, użyj poniższego kodu.
źródło