Jak ustawić maksymalną liczbę znaków dla wejścia EditText w Androidzie? Widzę setMaxLines, setMaxEMS, ale nic dla liczby znaków.
Jak ustawić maksymalną liczbę znaków dla wejścia EditText w Androidzie? Widzę setMaxLines, setMaxEMS, ale nic dla liczby znaków.
Odpowiedzi:
W XML możesz dodać tę linię do EditText
View
gdzie 140 to maksymalna liczba znaków:
android:maxLength="140"
Możesz użyć InputFilter, to jest sposób:
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);
To działa dla mnie.
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
}
});
W ten sposób zadziałało, to najlepsze, jakie znalazłem. Maksymalna długość to 200 znaków
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 musi ustawić „textFilter”
android:inputType="textFilter"
użyj tej funkcji w dowolnym miejscu łatwo:
public static void setEditTextMaxLength(EditText editText, int length) {
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(length);
editText.setFilters(FilterArray);
}