如何以编程方式在Android TextView中设置maxLength?

问题描述:

我想以编程方式设置maxLength属性TextView,因为我不想在布局中对其进行硬编码。我看不到有关maxLength的任何set方法。如何以编程方式在Android TextView中设置maxLength?

任何人都可以指导我如何做到这一点?

应该是这样的。但从来没有使用过它的TextView,只有EditText上:

TextView tv = new TextView(this); 
int maxLength = 10; 
InputFilter[] fArray = new InputFilter[1]; 
fArray[0] = new InputFilter.LengthFilter(maxLength); 
tv.setFilters(fArray); 
+104

在该大厦,它可能是更清洁的地方:tv.setFilters(新输入过滤器[] {新InputFilter.LengthFilter(10)} ); – 2012-05-15 20:38:13

+0

这对我有效 – adrian4aes 2015-09-09 16:43:51

+16

不能只说“maxLength()”..不,不,不会,..这太容易了。他们必须把它抽象出来......好吧! – giulio 2016-07-15 06:11:02

试试这个

int maxLengthofEditText = 4;  
editText.setFilters(new InputFilter[] {new InputFilter.LengthFilter(maxLengthofEditText)}); 
+1

这对我很有用,但在Android 5.1中,你仍然可以继续输入字母,在输入字段中只是“不可见”。但是它们显示在文字提案中。而当你试图在结尾删除字母。 – Radon8472 2015-12-03 15:14:33

+7

这不是“另一种方式”,这是第一个答案的简短版本,同样的方式。 – 2016-01-11 17:22:26

简单的方法限制编辑的文本字符

EditText ed=(EditText)findViewById(R.id.edittxt); 
ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(15)}); 

对于那些使用科特林

fun EditText.limitLength(maxLength: Int) { 
    filters = arrayOf(InputFilter.LengthFilter(maxLength)) 
} 

然后,你可以使用一个简单的editText.limitLength(10)

+0

为什么不使用setMaxLength作为函数名?你也可以将其应用于textview也......谢谢+1 :) – crgarridos 2017-10-11 09:42:41

+0

我有其他方法遵循此模式:limitDecimalPlaces,limitNumberOnly,limitAscii与limitLength一起去。 – Kevin 2017-10-13 18:37:49

 AlertDialog.Builder builder = new AlertDialog.Builder(this); 
        builder.setTitle("Title"); 


        final EditText input = new EditText(this); 
        input.setInputType(InputType.TYPE_CLASS_NUMBER); 
//for Limit...      
input.setFilters(new InputFilter[] {new InputFilter.LengthFilter(3)}); 
        builder.setView(input);