由于设置EditText.setMaxlength或通过过滤器没有做任何限制用户输入文本到特定长度的事情,我想我会扩展EditText并自己处理,但我遇到了Indexoutofbound异常。
这是我的代码,如果有人能指出我正确的方向,我感激不尽:
import android.content.Context;
import android.text.Editable;
import android.util.AttributeSet;
import android.widget.EditText;
public class EditTextExtended extends EditText
{
protected int maxTextLength = Integer.MAX_VALUE;
protected int minTextLength = Integer.MIN_VALUE;
private Boolean isTextChanged;
public EditTextExtended(Context context, AttributeSet attributeSet)
{
super(context, attributeSet);
}
public void setMaximumTextLength(int value)
{
maxTextLength = value;
}
public void setMinimumTextLength(int value)
{
minTextLength = value;
}
@Override
protected void onTextChanged(CharSequence charSequence, int start, int before, int after)
{
Editable userEnteredText = this.getText();
if (this.getText().length() > maxTextLength)
{
String maximumAllowedCharacters = userEnteredText.toString().substring(0, maxTextLength);
if (!isTextChanged)
{
isTextChanged = true;
this.setText(maximumAllowedCharacters);
}
}
super.onTextChanged(charSequence, start, before, after);
}
}

我已将setMaximumTextLength设置为10.因此,当我输入第11个字符时,它会抛出带有IndexOutOfBoundsException的InvocationTrargetException,如下所示:
所以,请告诉我一些关于我做错了什么的线索。顺便说一下,我在Android 5.0.1上构建了目标API 21。
答案 0 :(得分:1)
假设您的edittext是在布局中定义的,您可以在那里进行
android:maxLength="10" // your required length here
http://developer.android.com/reference/android/widget/TextView.html#attr_android:maxLength
答案 1 :(得分:1)
首先从.xml中删除android:maxLength="10"
,然后执行以下操作:
将您的minlength设置为某个点,假设为10。
只要输入长于minlength,就更改maxLength。
*请注意,maxlenght将以编程方式定义 或者看一下这个主题click here