如何在 Android 中设置 EditText 的最大字符数?

如何设置 Android EditText 输入的最大字符数?我看到 setMaxLines、 setMaxEMS,但是没有字符数。

113918 次浏览

在 XML 中,您可以将这一行添加到 EditText View,其中140是最大字符数:

android:maxLength="140"

你可以使用 InputFilter,就是这样:

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);

对我很有效。

    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


}
});

动态:

editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(MAX_NUM) });

通过 xml:

<EditText
android:maxLength="@integer/max_edittext_length"

我总是这样设置最大值:

    <EditText
android:id="@+id/edit_blaze_it
android:layout_width="0dp"
android:layout_height="@dimen/too_high"


<!-- This is the line you need to write to set the max-->
android:maxLength="420"
/>

这样对我很有效,这是我找到的最好的。 它的最大长度为200个字符

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 必须设置“ textFilter”

        android:inputType="textFilter"

方便地在任何地方使用此功能:

 public static void setEditTextMaxLength(EditText editText, int length) {
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(length);
editText.setFilters(FilterArray);
}

Kotlin 的方式

editText.filters = arrayOf(InputFilter.LengthFilter(maxLength))

显然,您可以在 xml 或 InputFilter 中使用 maxLlength。长度过滤器,如上所述。但对我来说,有些时候,这还不够。我为更灵活的 EditText 设置创建了一个类: < a href = “ https://github.com/devapro/NumberWatcher”rel = “ nofollow norefrer”> https://github.com/devapro/numberwatcher 它只是数字输入的实现,但是您可以为任何类型更改它。

在 maxLenght 中不能使用 XML 我用这个代码,你可以限制字符的数量

String editorName = mEditorNameNd.getText().toString().substring(0, Math.min(mEditorNameNd.length(), 15));

您可以向提交或更改事件添加验证挂钩。

if (EditText.length() <=10){
Toast.makeText(MainAcitvity.this, "Enter Valid Number", Toast.LENGTH_SHORT).show();
contact.setError("Enter Valid");
return false;
}