studio - ¿Cómo deshabilitar el posicionamiento del cursor y la selección de texto en EditText?(Androide)
propiedades edittext android (4)
Estoy buscando una forma de evitar que el usuario mueva la posición del cursor a cualquier parte. El cursor siempre debe permanecer al final del valor de EditText actual. Además de eso, el usuario no debería poder seleccionar nada en EditText. ¿Tienes alguna idea de cómo realizar eso en Android usando un EditText?
Para aclarar: el usuario debería poder insertar texto, pero solo al final.
Esto restablecerá el enfoque del cursor a la última posición del texto
editText.setSelection(editText.getText().length());
Este método deshabilitará el movimiento del cursor al tacto
public class MyEditText extends EditText{
@Override
public boolean onTouchEvent(MotionEvent event)
{
final int eventX = event.getX();
final int eventY = event.getY();
if( (eventX,eventY) is in the middle of your editText)
{
return false;
}
return true;
}
}
Y puedes usar el atributo xml
android: cursorVisible
o la función java
setCursorVisible (boolean)
para deshabilitar el cursor parpadeante de edittext
Parece que la mejor manera de hacerlo es crear su propia clase CustomEditText
y anular / modificar cualquier método relevante. Puede ver el código fuente de EditText
aquí.
public class CustomEditText extends EditText {
@Override
public void selectAll() {
// Do nothing
}
/* override other methods, etc. */
}
Prueba esto:
mEditText.setMovementMethod(null);
Yo tuve el mismo problema. Esto terminó trabajando para mí:
public class CustomEditText extends EditText {
@Override
public void onSelectionChanged(int start, int end) {
CharSequence text = getText();
if (text != null) {
if (start != text.length() || end != text.length()) {
setSelection(text.length(), text.length());
return;
}
}
super.onSelectionChanged(start, end);
}
}