<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
maxLinescorresponde 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
inputTypeatext. 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
LimitedEditTextclase.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();enafterTextChangeddevolución de llamada. Funciona mejor porque cuando a escribiredespués de la tipificaciónabcd, la EditarTexto puede 'pensar' se reemplazaabcdconabcde, 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() > 3a 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
EditTexta 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:inputTypereemplaza el uso deandroid:singleLine