Android:EditText中的字符数有限

时间:2014-07-18 09:49:26

标签: android android-edittext

我想允许用户在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个字符。

2 个答案:

答案 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"
相关问题