Comment définir le nombre maximal de caractères pour une entrée Android EditText? Je vois setMaxLines, setMaxEMS, mais rien pour le nombre de caractères.
Comment définir le nombre maximal de caractères pour une entrée Android EditText? Je vois setMaxLines, setMaxEMS, mais rien pour le nombre de caractères.
Réponses:
En XML, vous pouvez ajouter cette ligne à la EditText
View
où 140 est le nombre maximum de caractères:
android:maxLength="140"
Vous pouvez utiliser un InputFilter, c'est comme ça:
EditText myEditText = (EditText) findViewById(R.id.editText1);
InputFilter[] filters = new InputFilter[1];
filters[0] = new InputFilter.LengthFilter(10); //Filter to 10 characters
myEditText .setFilters(filters);
Ça marche pour moi.
etMsgDescription.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maximum_character)});
etMsgDescription.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
tvCharacterLimite.setText(" "+String.valueOf(maximum_character - etMsgDescription.getText().length()));
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
Cela a fonctionné pour moi de cette façon, c'est le meilleur que j'ai trouvé. C'est pour une longueur maximale de 200 caractères
editObservations.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (editObservations.getText().length() >= 201){
String str = editObservations.getText().toString().substring(0, 200);
editObservations.setText(str);
editObservations.setSelection(str.length());
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
<EditText
android:id="@+id/edtName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter device name"
android:maxLength="10"
android:inputType="textFilter"
android:singleLine="true"/>
InputType doit définir "textFilter"
android:inputType="textFilter"
utilisez cette fonction n'importe où facilement:
public static void setEditTextMaxLength(EditText editText, int length) {
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(length);
editText.setFilters(FilterArray);
}