Android中限制EditText的文本长度

问题描述 投票:639回答:19

限制Android中EditText的文本长度的最佳方法是什么?

有没有办法通过xml做到这一点?

android android-edittext maxlength
19个回答
1273
投票

Documentation

Example

android:maxLength="10"

10
投票

Xml


8
投票
您可以通过在XML文件中添加以下定义来实现此目的的另一种方法:

5
投票
material.io,您可以将TextInputEditTextTextInputLayout结合使用:

4
投票
XML

2
投票
这是一个自定义EditText类,它允许Length过滤器与其他过滤器一起使用。感谢Tim Gallagher的回答(下)

2
投票
在xml中的简单方法:

2
投票
这很好...

1
投票
我看到了很多很好的解决方案,但是我想给出一个我认为是更完整和用户友好的解决方案,包括:

1
投票
您可以在EditText中使用android:maxLength="10"。(此处最多10个字符)

0
投票
尝试使用

[Java


326
投票

使用输入过滤器限制文本视图的最大长度。

TextView editEntryView = new TextView(...);
InputFilter[] filterArray = new InputFilter[1];
filterArray[0] = new InputFilter.LengthFilter(8);
editEntryView.setFilters(filterArray);

190
投票
EditText editText = new EditText(this);
int maxLength = 3;    
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLength)});

64
投票

给已经在使用自定义输入过滤器并且想限制最大长度的人的说明:在代码中分配输入过滤器后,所有先前设置的输入过滤器均被清除,包括android:maxLength中的一组设置。在尝试使用自定义输入过滤器以防止使用某些密码字段中不允许的字符时,我发现了这一点。使用setFilters设置该过滤器后,不再观察到maxLength。解决方案是通过编程将maxLength和我的自定义过滤器一起设置。像这样的东西:

myEditText.setFilters(new InputFilter[] { new PasswordCharFilter(), new InputFilter.LengthFilter(20) });


37
投票
TextView tv = new TextView(this); tv.setFilters(new InputFilter[]{ new InputFilter.LengthFilter(250) });

23
投票
对于想知道如何实现此目标的其他人,这是我扩展的EditTextEditTextNumeric

17
投票
由于goto10的观察,我将以下代码放在一起,以防止通过设置最大长度而丢失其他过滤器:

15
投票
//Set Length filter. Restricting to 10 characters only editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(MAX_LENGTH)}); //Allowing only upper case characters editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()}); //Attaching multiple filters editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(MAX_LENGTH), new InputFilter.AllCaps()});

12
投票
我遇到了这个问题,我认为我们缺少一种以编程方式很好地说明这一点而又不会丢失已经设置的过滤器的方式。
© www.soinside.com 2019 - 2024. All rights reserved.