¿Hay alguna manera de especificar el número máximo de líneas para un EditText
? Con esto quiero decir todas las líneas de texto, no solo las visibles (como se describe el atributo the android:maxLines
). El número de línea no debe ser 1, por lo que android:singleLine
no es una opción.Establecer el número máximo de líneas de texto para un EditText
Respuesta
Usted podría utilizar esto:
android:singleLine="false" android:lines="5"
No sé si eso lo que necesita.
android:maxLength="140"
Creo que esto es igual a una línea, en teoría, podría cambiar el maxlength a "700", que sería 5 líneas. No estoy exactamente seguro de los números, pero la lógica detrás de esto es válida.
Eso no es válido. ¿Qué pasa si el usuario escribe 140x Enter? Él crea 140 líneas entonces. – Sebi
Sebi- lo que ingresa el usuario no crea la cantidad máxima de líneas. este es el código del programa que establece el límite. – Hounge
Esta respuesta no me suena bien. Como se menciona en @Sebi, 140 caracteres podrían abarcar una gran variedad de líneas, dependiendo de qué caracteres estén en la cadena. Aparte de los saltos de línea, hay una gran diferencia entre el ancho de 140 'i's y 140' m's. – PaulrBear
Creo que se puede utilizar este código para comprobar el número de líneas en EditarTexto,
editText.getLayout().getLineCount() > row-limit;
Preferiblemente se puede utilizar en "afterTextChanged()" de un TextWatcher oyente para no permitir al usuario para introducir aún más si el límite de fila ha sido alcanzado.
edit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
if(editText.getLayout().getLineCount() > row-limit){
//Code to stop edittext from being edited any further.
}
});
conjunto androide: maxLines = "2" en XML y añade:
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { }
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { }
@Override
public void afterTextChanged(Editable editable) {
if (null != edittext.getLayout() && edittext.getLayout().getLineCount() > 2) {
edittext.getText().delete(edittext.getText().length() - 1, edittext.getText().length());
}
}
});
es solución para mí. Lo mismo puedes hacer por el límite de 3,4 ... n filas para tu texto de edición.
¿Puedes formatear el código de una manera adecuada y también explicarlo un poco si puedes? –
maxLines = "2" en su texto de edición en xml: solo hace visibles 2 filas para el usuario, pero puede escribir más de 2 filas. En este caso, 1 fila se ocultará y el usuario verá la segunda y tercera fila y así sucesivamente.En el método afterTextChanged (Editable editable) verificamos: ¿apareció el nuevo símbolo en la tercera fila, o todavía está en segundo o primero? si el símbolo aparece en la tercera fila, lo eliminamos. Entonces, el texto no puede tener más de 2 filas en el texto de edición. – fvolodimir
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
public class EditTextLinesLimiter implements TextWatcher {
private EditText editText;
private int maxLines;
private String lastValue = "";
public EditTextLinesLimiter(EditText editText, int maxLines) {
this.editText = editText;
this.maxLines = maxLines;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
lastValue = charSequence.toString();
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
if (editText.getLineCount() > maxLines) {
int selectionStart = editText.getSelectionStart() - 1;
editText.setText(lastValue);
if (selectionStart >= editText.length()) {
selectionStart = editText.length();
}
editText.setSelection(selectionStart);
}
}
}
Y luego:
editText.addTextChangedListener(new EditTextLinesLimiter(editText, 2));
- 1. establecer el número máximo de líneas en uilabel
- 2. ¿Cómo establecer el número de líneas para un QTextEdit?
- 3. Establecer el número máximo de filas visibles para listview
- 4. cómo establecer el ancho máximo para un diseño
- 5. Establecer inputType para un EditText?
- 6. Android: alineación vertical para varias líneas EditText (área de texto)
- 7. Cómo establecer la altura del elemento para un número fijo de líneas de texto
- 8. contando el número de líneas en un archivo de texto
- 9. ¿Puedo establecer el número máximo de filas en ung DataView
- 10. Limitando el número de líneas en el área de texto
- 11. EditText setText() establece el texto en varias vistas de EditText
- 12. JQuery para establecer un ancho máximo dinámico
- 13. texto dividido en líneas por el número de caracteres
- 14. Código Java para envolver líneas de texto en un ancho de línea máximo
- 15. número de líneas visibles de un TextBlock
- 16. (Play 2.0) Establecer el tamaño máximo de POST para AnyContent
- 17. Número máximo de Ruby
- 18. Número máximo de UILocalNotification para iphone
- 19. Número máximo de Err.Raise?
- 20. Número de hilo máximo para una aplicación?
- 21. ¿Número máximo de inodos en un directorio?
- 22. Cadena de EditText para flotar
- 23. ¿Cómo establecer el foco a la derecha del texto en EditText para Android?
- 24. Recuperar el número total de líneas en un archivo
- 25. ¿Cómo obtener texto de EditText?
- 26. Establecer imagen en el lado izquierdo de EditText en Android
- 27. ¿Cómo recortar texto de longitud desconocida para un cierto número de líneas?
- 28. OpenSSL configure el número máximo de conexiones
- 29. Cómo crear DSL en Scala para líneas de comando con un número mínimo de texto adicional
- 30. Cómo establecer el ancho máximo de dijit.ToolTip?
No. android: líneas se trata de las líneas visibles. Estoy interesado en las líneas de texto. Si establece Android: líneas para editar texto y escribe 10 líneas, tendrá 10 líneas de texto, pero solo 5 visibles. Lo que quiero es tener un máximo de 5 líneas de texto. Después de la segunda línea, ya no podrás escribir más. Gracias por la respuesta. – Gratzi
Bien, pero no hay compilación en "limitador de filas". Tienes que hacerlo por ti mismo. Hay un tema en stackoverflow con un código de ejemplo, quizás pueda usarlo: http://stackoverflow.com/questions/7092961/edittext-maxlines-not-working-user-can-still-input-more-lines-than- establecer – MartijnG
Vi esa publicación, pero la corrección maneja solo la tecla Intro y no es muy elegante. Elimina porciones de texto, incluso si no es necesario hacerlo. – Gratzi