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.
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);
}
}
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
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. */
}