web-dev-qa-db-fra.com

Android Longueur maximale de EditText

J'ai mis en place une longueur maximale de texte dans un champ EditText.

<EditText
            Android:id="@+id/courseDescriptionField"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:inputType="textMultiLine"
            Android:lines="5"
            Android:maxLength="@integer/max_course_description_limit"
            Android:gravity="left|top" >
        </EditText>

Le problème pour moi cependant, c’est que le texte STOPS apparaît après 140 caractères, mais il continue de taper, sauf que le texte n’apparaît pas, mais il apparaît dans le "tampon" (ce qui signifie suggestion) si c'est comme ça que vous l'appelez.

En guise de remarque, j'utilise un TextWatcher pour suivre la limite. Existe-t-il un moyen de limiter complètement la quantité de texte, de sorte que, lorsqu'il y a 140 caractères, rien ne se passe si vous appuyez sur autre chose que le retour arrière/la suppression?

83
Jon Wei

Double possible de longueur maximale du texte de EditText sous Android

Utilisation Android:maxLength="140"

Cela devrait fonctionner. :)

J'espère que ça t'as aidé

99
Ushal Naidoo

J'ai eu le même problème.

Voici une solution de contournement

Android:inputType="textNoSuggestions|textVisiblePassword"
Android:maxLength="6"

Merci à Comment puis-je désactiver les suggestions dans EditText?

43
mrroboaat
EditText editText= ....;
InputFilter[] fa= new InputFilter[1];
fa[0] = new InputFilter.LengthFilter(8);
editText.setFilters(fa);
13
Samira Ekrami

J'ai eu le même problème. Cela fonctionne parfaitement bien lorsque vous ajoutez ceci:

Android:inputType="textFilter"

à votre EditText.

5
Akeshwar Jha

Vous pouvez essayer ceci

 EditText et = (EditText) findViewById(R.id.myeditText);
    et.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(140) }); // maximum length is 140
2

Si vous voulez voir une étiquette de compteur, vous pouvez utiliser app:counterEnabled et Android:maxLength, comme:

<Android.support.design.widget.TextInputLayout
  Android:layout_width="match_parent"
  Android:layout_height="wrap_content"
  app:counterEnabled="true">

  <EditText
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:maxLength="420" />

</Android.support.design.widget.TextInputLayout>

NE PAS FAIRE set app:counterMaxLength sur TextInputLayout car il sera en conflit avec Android:maxLength entraînant l'émission de caractères invisibles après que le texte a atteint la limite de taille.

1
Daniel Gomez Rico

Pour moi cette solution fonctionne:

edittext.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
0
Wojtek

Si vous avez utilisé maxLength = 6, parfois, ce que vous entrez dans ces caractères est ajouté en haut du clavier, appelé suggestions. Ainsi, lorsque vous supprimez des lettres saisies à cette heure, les suggestions sont d'abord supprimées, puis le texte réel à l'intérieur de EditText. Pour cela, vous devez supprimer les suggestions.

Android:inputType="textNoSuggestions"` 

ou

Android:inputType="textFilter"

Cela supprimera ces suggestions.

0
venkat