设置EditText的最大长度

8

我想在EditText中设置一个字符长度,但只在某个条件下生效。虽然可以通过XML设置最大长度,但这将应用于整个条件。如何以编程方式设置最大长度?


看起来这个答案应该会对你有所帮助:https://dev59.com/BWAf5IYBdhLWcg3wVxnh#24749916 - Nick Yelito
没帮上忙,伙计。 - omar wael
为什么安卓没有为这个制作一个准备好的函数? - omar wael
请将您的代码发布 - Linh
我已经从问题中移除了不相关的Java标签,请只使用有效的标签。 - Navoneel Talukdar
4个回答

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

如何调用它?我看到了这个函数,我给它传递了EditText的ID和长度,但是没有任何反应。 - omar wael

8
你可以在你的XML文件中添加以下内容:

android:maxLength="10"

或者通过编程方式实现:
EditText editText = new EditText(this);
int maxLength = 3;    
editText.setFilters(new InputFilter[] {
    new InputFilter.LengthFilter(maxLength)
});

你需要在 .xml 文件(activity layout)中放置第一个选项。或者,在 setContentView(R.layout.your_activity); 之后,在 activity 文件中放置第二个选项,就像这样:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_activity);EditText editText = (EditText)findViewById(R.id.your_edit_text); int maxLength = 3; editText.setFilters(new InputFilter[] { new InputFilter.LengthFilter(maxLength) });} - Omar Vodiak

3
在 Kotlin 中,这个扩展函数非常方便:
fun EditText.setMaxLength(maxLength: Int) {
    filters = arrayOf(InputFilter.LengthFilter(maxLength))
}

1
edtTime.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(4) });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接