在Android的EditText中,当用户尝试超过限制输入时设置错误。

5 浏览
0 Comments

在Android的EditText中,当用户尝试超过限制输入时设置错误。

我试过使用TextWatcherafterTextChanged。我想要的是,如果用户在达到限制后尝试插入字符,就显示一个toast消息或在EditText上设置错误。我认为这是可能的,但不知道如何实现。

更新

我的EditText代码如下:


在这里,如果用户尝试输入超过10位数字,我想要显示一个toast或设置错误。

更新

 editText1.setOnKeyListener(new OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (editText1.getText().length() >= 10)
                Toast.makeText(getApplicationContext(), "hi",
                        Toast.LENGTH_SHORT).show();
            return false;
        }
    });

0
0 Comments

问题:在Android的EditText中,当用户输入字符超过限制后,如何设置错误提示,并且阻止用户继续输入。

解决方法:

1. 在EditText的addTextChangedListener方法中添加TextWatcher,监听文本变化。

2. 在onTextChanged方法中,判断当前输入的字符长度是否超过了设定的最大长度。

3. 如果超过了最大长度,则调用EditText的setError方法,设置错误提示信息。

4. 如果没有超过最大长度,则清除错误提示。

5. 可以使用EditText的getError方法来检查当前是否有错误提示。

6. 如果需要动态设置字符限制,可以使用getEditTextCharacterLimit方法来获取EditText的最大长度。

代码示例:

editText.addTextChangedListener(new TextWatcher() {
    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        if (charSequence.toString().length() >= maxLength) {
            // show toast / error here
            String limitReached = "Maximum limit of characters reached!";
            editText.setError(limitReached);
        } else {
            // clear error
            editText.setError(null);
        }
    }
    public void afterTextChanged(Editable editable) {
    }
});
private int getEditTextCharacterLimit(EditText editText) {
    int defaultMaxLength = 5; // default value
    InputFilter[] filters = editText.getFilters();
    if (filters != null && filters[0] != null && filters[0] instanceof InputFilter.LengthFilter) {
        return ((InputFilter.LengthFilter) filters[0]).getMax();
    } else {
        return defaultMaxLength;
    }
}

以上就是解决Android EditText超过字符限制后设置错误提示的方法。

0
0 Comments

在Android中,当使用软键盘输入时,键盘监听器(OnKeyListener)不起作用。根据Android官方文档,OnKeyListener只对硬件键盘有效,对软件输入法没有作用。因此,在处理软键盘输入时,我们需要使用TextWatcher。

那么,如果我们希望在达到EditText字符限制后,禁止用户继续输入,应该如何解决呢?下面是一种解决方法:

1. 首先,你需要在XML布局文件中定义一个EditText,并设置一个字符限制。例如,我们将限制EditText只能输入10个字符:


2. 接下来,在你的Activity或Fragment中,你需要获取EditText的引用,并添加一个TextWatcher:

EditText editText = findViewById(R.id.editText);
editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        // 在文本改变之前执行的操作
    }
    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        // 在文本改变时执行的操作
    }
    @Override
    public void afterTextChanged(Editable s) {
        // 在文本改变之后执行的操作
        if (s.length() >= 10) {
            editText.setError("Reached maximum character limit");
        }
    }
});

在这个TextWatcher的afterTextChanged()方法中,我们检查EditText的字符长度是否已经达到了限制。如果达到了限制,我们使用setError()方法设置一个错误消息,告诉用户已经达到了最大字符限制。

通过这种方法,我们可以在达到EditText字符限制后,禁止用户继续输入,并给予用户相应的错误提示。

0
0 Comments

问题出现的原因:

问题出现的原因是在Android的EditText控件中,当用户输入超过设定的限制长度时,没有显示错误提示。

解决方法:

为了解决这个问题,可以通过以下步骤来实现:

1. 使用代码获取EditText的最大长度,可以参考这个链接:https://stackoverflow.com/questions/8069015

2. 实现一个KeyListener,并将其设置给EditText。

3. 在KeyListener的onKey方法中,判断EditText中的文本长度是否超过了最大长度。

4. 如果超过了最大长度,可以在此处显示错误提示。

下面是具体的代码实现:

int maxLength = // 在此处获取最大长度的代码;
editText.setOnKeyListener(new OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if(editText.getText().toString().length() >= maxLength) {
            // 在此处显示错误提示
        }
        return false;
    }
});

通过以上步骤实现后,当用户输入超过最大长度时,会显示错误提示。如果想要查看最大长度的属性值以及达到限制时EditText中的文本长度,可以在if语句之前分别打印`maxLength`属性和`editText.getText().toString().length()`的值。

另外,还需要注意的是,如果没有添加if条件判断,是不会有任何效果的。

在你的EditText中输入时,是否有任何内容被打印出来?

没有,朋友。没有任何内容被打印出来。

我注意到你将监听器设置在了editText2上,而不是editText1上,可能是填错了EditText。你可以尝试在if语句之前打印一些内容吗?

我明白了,朋友。非常感谢。之前我分别将addTextChangedListener和setOnKeyListener分开使用,这就是问题所在。现在我将setOnKeyListener放在了addTextChangedListener内部。现在一切都正常了。

0