<EditText
android:id="@+id/editText2"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:maxLines="5"
android:lines="5">
</EditText>
L'utilisateur peut saisir plus de 5 lignes, en appuyant sur la touche Entrée / ligne suivante. Comment puis-je limiter l'entrée utilisateur à un nombre fixe de lignes avec EditText?
android
android-layout
android-edittext
Indrek Kõue
la source
la source
Réponses:
L'attribut
maxLines
correspond à la hauteur maximale duEditText
, il contrôle les limites extérieures et non les lignes de texte intérieures.la source
Vous devez simplement vous assurer que vous avez défini l'attribut "inputType". Cela ne fonctionne pas sans cette ligne.
la source
inputType
àtext
. Merci d'avoir économisé mon temps :-)Cela ne résout pas le problème général de la limitation à n lignes. Si vous souhaitez limiter votre EditText à une seule ligne de texte, cela peut être très simple.
Vous pouvez définir cela dans le fichier xml.
ou par programmation
la source
@Cedekasem vous avez raison, il n'y a pas de "limiteur de ligne" intégré. Mais j'en ai construit un moi-même, donc si quelqu'un est intéressé, le code est ci-dessous. À votre santé.
la source
J'ai fait quelque chose comme vous cherchiez. Voici ma
LimitedEditText
classe.Fonctionnalités:
ne vous amènera pas à la fin - il restera où vous étiez.
Je désactive l'écouteur, car chaque appel de
setText()
méthode appelle de manière récursive ces 3 méthodes de rappel au cas où l'utilisateur dépasserait la limite de caractères ou de lignes.Code:
la source
beforeCursorPosition = getSelectionStart();
enafterTextChanged
callback. Cela fonctionne mieux car lors de la saisiee
après la saisieabcd
, le EditText peut «penser» que vous remplacezabcd
parabcde
, en raison de la raison de la méthode d'entrée.J'ai fait une solution plus simple pour cela: D
Vous pouvez modifier la valeur de 3 en fonction
txtSpecialRequests.getLineCount() > 3
de vos besoins.la source
Voici un InputFilter qui limite les lignes autorisées dans EditText:
Pour l'ajouter à EditText:
la source
C'est ce que j'ai utilisé dans mon projet:
Et cela a fonctionné dans tous les scénarios
la source
définir editText
android:inputType="text"
la source
Solution la plus simple:
...
la source
la source
c'est une approche. Pourrait aider quelqu'un.
la source
Une autre façon de limiter votre
EditText
à une ligne est la suivante:Notez qu'après avoir appliqué cette méthode de transformation, la touche Entrée crée des espaces lorsqu'elle est enfoncée. Cela satisfait toujours la question de TS.
la source
Vous pouvez limiter votre texte en fonction de votre nombre de lignes, je dis environ 37 alphabets en une seule ligne
la source
getLineCount () est une option; si vous voulez des valeurs non nulles, assurez-vous que votre vue est mesurée. Pour le clavier logiciel, onKeyListener ne fonctionnera pas, vous devez donc ajouter addTextChangedListener () qui suivra les modifications de texte au fur et à mesure que vous tapez. Dès que vous avez suffisamment de lignes dans ses rappels, faites ce que vous voulez pour le limiter: supprimez les caractères avec getText (), setText () ou quelque chose de plus sophistiqué. Vous pouvez même limiter le nombre de caractères à l'aide d'un filtre.
Une autre option consiste à surveiller la taille du texte avec getLineBounds (). Cela interagira avec la gravité du texte / paddign alors soyez prudent.
la source
Pour un nombre limité de caractères, nous pouvons simplement utiliser la propriété maxLength de EditText car elle ne permettra pas à l'utilisateur d'entrer plus de caractères.
la source
la source
Autre idée: à chaque fois après la saisie, le nouveau texte serait enregistré dans un String lastText, uniquement si le nombre de lignes n'excède pas les MAX_LINES. Si c'est le cas, nous définirions le texte de EditText sur le dernier texte ajouté (de sorte que les modifications seraient supprimées) et informerions l'utilisateur de le garder court.
la source
Ceci est une extension de la réponse d' Indrek Kõue à Kotlin
la source
Essayez d'utiliser la combinaison suivante d'attributs du EditText dans le fichier xml:
android:singleLine="true"
android:maxLength="22"
la source
android:inputType
remplace l'utilisation deandroid:singleLine