Je cherche un moyen d'empêcher l'utilisateur de déplacer la position du curseur n'importe où. Le curseur doit toujours rester à la fin de la valeur EditText actuelle. De plus, l'utilisateur ne devrait pas pouvoir sélectionner quoi que ce soit dans EditText. Avez-vous une idée de comment réaliser cela dans Android en utilisant un EditText?
Pour clarifier: l'utilisateur doit pouvoir insérer du texte, mais seulement à la fin.
J'ai eu le même problème. Cela a fini par travailler pour moi:
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);
}
}
Essaye ça:
mEditText.setMovementMethod(null);
Cela réinitialisera le focus du curseur à la dernière position du texte
editText.setSelection(editText.getText().length());
Cette méthode désactivera le déplacement du curseur au toucher
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;
}
}
Et vous pouvez utiliser soit l'attribut xml
Android: curseurVisible
ou la fonction Java
setCursorVisible (booléen)
désactiver le curseur clignotant d'edittext
Il semble que la meilleure façon de procéder consiste à créer votre propre classe CustomEditText
et à remplacer/modifier toutes les méthodes pertinentes. Vous pouvez voir le code source pour EditText
ici.
public class CustomEditText extends EditText {
@Override
public void selectAll() {
// Do nothing
}
/* override other methods, etc. */
}