<EditText
android:id="@+id/editText2"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:maxLines="5"
android:lines="5">
</EditText>
O usuário pode inserir mais de 5 linhas pressionando a tecla Enter / próxima linha. Como posso limitar a entrada do usuário para uma quantidade fixa de linhas com o EditText?
android
android-layout
android-edittext
Indrek Kõue
fonte
fonte
Respostas:
O atributo
maxLines
corresponde à altura máxima doEditText
, controla os limites externos e não as linhas de texto internas.fonte
Você só precisa ter o atributo "inputType" definido. Não funciona sem essa linha.
fonte
inputType
paratext
. Obrigado por poupar o meu tempo :-)Isso não resolve a questão geral de limitar n linhas. Se você deseja limitar seu EditText para receber apenas 1 linha de texto, isso pode ser muito fácil.
Você pode definir isso no arquivo xml.
ou programaticamente
fonte
@Cedekasem você está certo, não existe um "limitador de linha" embutido. Mas eu construí um eu mesmo, então se alguém estiver interessado, o código está abaixo. Felicidades.
fonte
Eu fiz algo como vocês estavam procurando. Aqui está a minha
LimitedEditText
aula.Recursos:
não o levará ao fim - ele permanecerá onde esteve.
Estou desativando o ouvinte, porque cada chamada de
setText()
método chama recursivamente esses três métodos de retorno de chamada no caso em que o usuário excede o limite de caracteres ou linhas.Código:
fonte
beforeCursorPosition = getSelectionStart();
emafterTextChanged
retorno de chamada. Funciona melhor porque, ao digitare
após digitarabcd
, o EditText pode 'pensar' que você substituiabcd
porabcde
causa do motivo do método de entrada.Eu fiz a solução mais simples para isso: D
Você pode alterar o valor de 3 polegadas
txtSpecialRequests.getLineCount() > 3
para suas necessidades.fonte
Aqui está um InputFilter que limita as linhas permitidas no EditText:
Para adicioná-lo ao EditText:
fonte
Isto é o que eu usei no meu projeto:
E funcionou em todos os cenários
fonte
definir editText
android:inputType="text"
fonte
Solução mais simples:
...
fonte
fonte
essa é uma abordagem. Pode ajudar alguém.
fonte
Outra maneira de limitar sua
EditText
linha a uma é a seguinte:Observe que, após aplicar esse método de transformação, a tecla Enter cria espaços quando pressionada. Isso ainda satisfaz a pergunta de TS.
fonte
Você pode limitar seu texto de acordo com o número de linhas que eu digo, em torno de 37 alfabetos em uma linha
fonte
getLineCount () é uma opção; se você quiser valores diferentes de zero, verifique se sua visualização é medida. Para o teclado virtual, o onKeyListener não funcionará; portanto, você deve adicionar addTextChangedListener () que acompanhará as alterações de texto enquanto você digita. Assim que você receber linhas suficientes em seus retornos de chamada, faça o que você quiser para limitar: exclua caracteres com getText (), setText () ou algo mais sofisticado. Você pode até limitar o número de caracteres usando um filtro.
Outra opção é monitorar o tamanho do texto com getLineBounds (). Isso irá interagir com a gravidade do texto / paddign, portanto, tenha cuidado.
fonte
Para o número limite de caracteres, podemos simplesmente usar a propriedade maxLength de EditText, pois não permitirá que o usuário insira mais caracteres.
fonte
fonte
Outra idéia: toda vez que você digitar, o novo texto será salvo em um String lastText, apenas se o número de linhas não exceder o MAX_LINES. Nesse caso, definiríamos o texto do EditText como o último texto adicionado (para que as alterações fossem excluídas) e notificaríamos o usuário para mantê-lo curto.
fonte
Esta é uma extensão da resposta de Indrek Kõue ao Kotlin
fonte
Tente usar a seguinte combinação de atributos do EditText dentro do arquivo xml:
android:singleLine="true"
android:maxLength="22"
fonte
android:inputType
substitui o uso deandroid:singleLine