<EditText
android:id="@+id/editText2"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:maxLines="5"
android:lines="5">
</EditText>
El usuario puede ingresar más de 5 líneas, presionando la tecla enter / next row. ¿Cómo puedo limitar la entrada del usuario a una cantidad fija de filas con EditText?
android
android-layout
android-edittext
Indrek Kõue
fuente
fuente
Respuestas:
El atributo
maxLines
corresponde a la altura máxima delEditText
, controla los límites exteriores y no las líneas de texto internas.fuente
Solo necesita asegurarse de tener el atributo "inputType" establecido. No funciona sin esta línea.
fuente
inputType
atext
. Gracias porEsto no resuelve el problema general de limitar a n líneas. Si desea limitar su EditText para tomar solo 1 línea de texto, esto puede ser muy fácil.
Puede configurar esto en el archivo xml.
o programáticamente
fuente
@ Cedekasem tienes razón, no hay un "limitador de fila" incorporado. Pero construí uno yo mismo, así que si alguien está interesado, el código está debajo. Salud.
fuente
Hice algo como ustedes han estado buscando. Aquí está mi
LimitedEditText
clase.caracteristicas:
no lo llevará al final, se quedará donde ha estado.
Estoy apagando el oyente, porque cada llamada al
setText()
método llamaría recursivamente estos 3 métodos de devolución de llamada en caso de que el usuario excediera el límite de caracteres o líneas.Código:
fuente
beforeCursorPosition = getSelectionStart();
enafterTextChanged
devolución de llamada. Funciona mejor porque cuando a escribire
después de la tipificaciónabcd
, la EditarTexto puede 'pensar' se reemplazaabcd
conabcde
, debido a la entrada razón método.He hecho una solución más simple para esto: D
Puede cambiar el valor de 3
txtSpecialRequests.getLineCount() > 3
a sus necesidades.fuente
Aquí hay un InputFilter que limita las líneas permitidas en EditText:
Para agregarlo a EditText:
fuente
Esto es lo que usé en mi proyecto:
Y funcionó en todos los escenarios.
fuente
establecer editText
android:inputType="text"
fuente
La solución más simple:
...
fuente
fuente
Este es un enfoque. Podría ayudar a alguien.
fuente
Otra forma de limitar su
EditText
a una línea es la siguiente:Tenga en cuenta que después de aplicar este método de transformación, la tecla Intro crea espacios cuando se presiona. Eso todavía satisface la pregunta de TS.
fuente
Puede limitar su texto de acuerdo con su no de líneas, digo alrededor de 37 alfabetos en una línea
fuente
getLineCount () es una opción; si desea valores distintos de cero, asegúrese de medir su vista. Para el teclado virtual, onKeyListener no funcionará, por lo que debe agregar addTextChangedListener () que hará un seguimiento de los cambios de texto a medida que escribe. Tan pronto como obtenga suficientes líneas dentro de sus devoluciones de llamada, haga lo que quiera limitarlo: elimine caracteres con getText (), setText () o algo más elegante. Incluso puede limitar el número de caracteres usando un filtro.
Otra opción es monitorear el tamaño del texto con getLineBounds (). Esto interactuará con el texto gravedad / paddign, así que ten cuidado.
fuente
Para el número límite de caracteres, simplemente podemos usar la propiedad maxLength de EditText ya que no permitirá al usuario ingresar más caracteres.
fuente
fuente
Otra idea: cada vez que escriba, el texto nuevo se guardaría en un String lastText, solo si el número de líneas no ejecuta Exex MAX_LINES. Si lo hace, configuraríamos el texto de EditText en el último texto agregado (para que se eliminen los cambios) y notificaremos al usuario para que sea breve.
fuente
Esta es una extensión de la respuesta de Indrek Kõue a Kotlin
fuente
Intente usar la siguiente combinación de atributos de EditText dentro del archivo xml:
android:singleLine="true"
android:maxLength="22"
fuente
android:inputType
reemplaza el uso deandroid:singleLine