Comment désactiver le positionnement du curseur et la sélection de texte dans un texte édité? (Android)

je cherche un moyen d'empêcher l'utilisateur de déplacer le curseur n'importe où. Le curseur doit toujours rester à la fin de la valeur EditText courante. En plus de cela, l'utilisateur ne devrait pas être en mesure de sélectionner quoi que ce soit dans le texte D'édition. Avez-vous une idée de comment réaliser que dans Android en utilisant un EditText?

pour clarifier: l'utilisateur doit pouvoir insérer du texte, mais seulement à la fin.

26
demandé sur Graham Borland 2012-06-23 18:46:45

4 réponses

j'ai eu le même problème. Cela a fini de 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);
    }

}
41
répondu mikejonesguy 2012-10-19 20:49:00

réinitialiser le curseur à la dernière position du texte

editText.setSelection(editText.getText().length());

Cette méthode va désactiver le curseur se déplacer sur la touche

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 l'attribut xml

android: cursorVisible

ou la fonction java

setCursorVisible (booléen)

pour désactiver le curseur clignotant d'edittext

7
répondu Hein 2012-06-23 15:04:11

essaye ceci:

mEditText.setMovementMethod(null);
3
répondu Jason Lin 2014-06-12 09:04:24

Il semble que la meilleure façon de le faire est de faire votre propre CustomEditText classe et remplacer/modifier les méthodes. Vous pouvez voir le code sourceEditText ici.

public class CustomEditText extends EditText {

    @Override
    public void selectAll() {
        // Do nothing
    }

    /* override other methods, etc. */

}
1
répondu Alex Lockwood 2012-06-23 16:17:30