我想允许用户在EditText中只输入10个字符。我尝试了两种方法。
方法1:
android:maxLength="10"
方法2:
我使用了InputFilter类。
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
当我使用这些方法时,光标停在10并且不再有可见的字符。但是,在这10个字符之后,它仍然是我输入的字符。我可以在键盘上方的建议区域看到它们。为了清楚地解释,让我举个例子。
假设我输入了" abcdefghij",它运行正常。现在,假设我输入" abcdefghijklm",我只能看到EditText中的前10个字符,但是当按退格键时它会删除最后一个字符" m"而不是删除" j",在EditText中可见的最后一个字符。
我该如何解决这个问题?我也不想在缓冲区中保留额外的字符。因此,当用户按退格键时,它应该删除第10个字符。
答案 0 :(得分:1)
您可以使用 edittext.addTextChangedListener 。
editTextLimited.addTextChangedListener(new TextWatcher() {
/** flag to prevent loop call of onTextChanged() */
private boolean setTextFlag = true;
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// add your code here something like this
if(count > 10){
Toast.makeText(context,"10 chars allowed",Toast.LENGTH_LONG).show();
// set the text to a string max length 10:
if (setTextFlag) {
setTextFlag = false;
editTextLimited.setText(s.subSequence(0, 10));
} else {
setTextFlag = true;
}
}
}
});
答案 1 :(得分:0)
应该通过将其添加到您的 EditText 中来解决您的问题:
android:inputType="textFilter"