<EditText
android:id="@+id/editText2"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:maxLines="5"
android:lines="5">
</EditText>
Użytkownik może wprowadzić więcej niż 5 wierszy, naciskając klawisz Enter / następny wiersz. Jak mogę ograniczyć dane wejściowe użytkownika do stałej liczby wierszy za pomocą EditText?
android
android-layout
android-edittext
Indrek Kõue
źródło
źródło
Odpowiedzi:
Atrybut
maxLines
odpowiada maksymalnej wysokościEditText
, kontroluje zewnętrzne granice, a nie wewnętrzne linie tekstu.źródło
Musisz tylko upewnić się, że masz ustawiony atrybut „inputType”. Nie działa bez tej linii.
źródło
inputType
siętext
. Dzięki za zaoszczędzenie czasu :-)Nie rozwiązuje to ogólnego problemu ograniczenia do n linii. Jeśli chcesz ograniczyć swój EditText do jednej linii tekstu, może to być bardzo proste.
Możesz to ustawić w pliku xml.
lub programowo
źródło
@Cedekasem masz rację, nie ma wbudowanego "ogranicznika wierszy". Ale zbudowałem samodzielnie, więc jeśli ktoś jest zainteresowany, kod znajduje się poniżej. Twoje zdrowie.
źródło
Zrobiłem coś, czego szukaliście. Oto moja
LimitedEditText
klasa.Cechy:
nie przeniesie Cię do końca - pozostanie tam, gdzie byłeś.
Wyłączam nasłuchiwanie, ponieważ każde wywołanie
setText()
metody wywoływałoby rekurencyjnie te 3 metody wywołania zwrotnego w przypadku, gdy użytkownik przekroczył limit znaków lub linii.Kod:
źródło
beforeCursorPosition = getSelectionStart();
wafterTextChanged
oddzwonieniu. Działa lepiej, ponieważ podczas pisaniae
po wpisaniuabcd
, EditText może „pomyśleć”, że go zastąpisz,abcd
zabcde
powodu metody wprowadzania.Zrobiłem dla tego prostsze rozwiązanie: D
Możesz zmienić wartość 3 cali
txtSpecialRequests.getLineCount() > 3
według swoich potrzeb.źródło
Oto InputFilter, który ogranicza dozwolone linie w EditText:
Aby dodać go do EditText:
źródło
Oto, czego użyłem w moim projekcie:
I działało we wszystkich scenariuszach
źródło
ustaw editText
android:inputType="text"
źródło
Najprostsze rozwiązanie:
...
źródło
źródło
to jest jedno podejście. Może komuś pomóc.
źródło
Innym sposobem ograniczenia
EditText
do jednej linii jest:Zwróć uwagę, że po zastosowaniu tej metody transformacji klawisz Enter tworzy spacje po naciśnięciu. To nadal spełnia pytanie TS.
źródło
Możesz ograniczyć swój tekst do liczby linii, mówię około 37 alfabetów w jednej linii
źródło
getLineCount () jest jedną z opcji; jeśli chcesz mieć wartości niezerowe, upewnij się, że Twój widok jest mierzony. W przypadku klawiatury programowej onKeyListener nie działa, więc musisz dodać addTextChangedListener (), który będzie śledzić zmiany tekstu podczas pisania. Jak tylko uzyskasz wystarczającą liczbę wierszy w jego wywołaniach zwrotnych, zrób wszystko, co chcesz, aby je ograniczyć: usuń znaki za pomocą getText (), setText () lub czegoś bardziej wyszukanego. Możesz nawet ograniczyć liczbę znaków za pomocą filtra.
Inną opcją jest monitorowanie rozmiaru tekstu za pomocą metody getLineBounds (). Będzie to oddziaływać z grawitacją / paddign tekstu, więc bądź ostrożny.
źródło
Aby ograniczyć liczbę znaków, możemy po prostu użyć właściwości maxLength elementu EditText, ponieważ nie pozwoli to użytkownikowi na wprowadzenie większej liczby znaków.
źródło
źródło
Inny pomysł: za każdym razem po wpisaniu, nowy tekst byłby zapisywany jako String lastText, tylko jeśli liczba linii nie przekracza MAX_LINES. Jeśli tak, ustawilibyśmy tekst EditText na ostatnio dodany tekst (aby zmiany zostały usunięte) i powiadomilibyśmy użytkownika, aby był krótki.
źródło
To jest rozszerzenie odpowiedzi Indreka Kõue na temat Kotlina
źródło
Spróbuj użyć następującej kombinacji atrybutów EditText w pliku xml:
android:singleLine="true"
android:maxLength="22"
źródło
android:inputType
zastępuje użycieandroid:singleLine