75 votes

Empêcher l'utilisation de la touche d'entrée dans l'EditText tout en affichant le texte sur plusieurs lignes

Comment puis-je créer un EditText sur Android de telle sorte que l'utilisateur ne puisse pas saisir un texte sur plusieurs lignes, mais que l'affichage soit tout de même sur plusieurs lignes (c'est-à-dire qu'il y ait un retour à la ligne au lieu que le texte se déplace vers la droite) ?

C'est similaire à l'application SMS intégrée où nous ne pouvons pas saisir de nouvelle ligne mais où le texte est affiché sur plusieurs lignes.

11 votes

Ajoutez simplement Android:inputType="textPersonName" à l'EditText pour l'empêcher d'appuyer sur la touche Entrée.

0voto

Gilad Points 79
    EditText textView = new EditText(activity);
    ...
    textView.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView textView, int i, KeyEvent keyEvent) {
            if(KeyEvent.KEYCODE_ENTER == keyEvent.getKeyCode()) {
                return false;
            }
            ....... 

        }
    });

0voto

androidguy Points 812

Je vais vous donner une autre option pour que vous n'ayez pas à sous-classer EditText. Créez un InputFilter qui filtre les sauts de ligne. Utilisez ensuite EditText.addInputFilter .

Le code source d'un tel filtre d'entrée est ici : https://gist.github.com/CapnSpellcheck/7c72830e43927380daf5205100c93977

Vous pouvez passer 0 dans le constructeur, et il n'autorisera aucune nouvelle ligne. De plus, vous pouvez combiner cela avec l'un des autres ajustements tels que android:imeOptions="actionDone" car cela permettra d'améliorer l'expérience sur certains appareils.

-1voto

Matt Quiros Points 2236

L'ajout de cette propriété à la EditText Le XML fonctionne pour moi :

android:lines="1"

Il permet aux utilisateurs d'entrer des caractères de nouvelle ligne, mais l'utilisateur ne peut pas les utiliser. EditText n'augmente pas en hauteur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X