【问题标题】:Prevent backspace when there is only one character in EditText当 EditText 中只有一个字符时防止退格
【发布时间】:2013-01-03 08:24:51
【问题描述】:

全部-对不起,我的标题太长了,我找不到任何其他方式来表达它。所以,我有一个EditText,当只剩下一个字符时(我可以通过TextWatcher 监控它)我想禁用退格键。这是我目前所拥有的:

    editText$.addTextChangedListener(new TextWatcher() {
    private String current = "";
    String one = "1";   
    String empty = one; //Right now only set to "1" but want to set to "[any character]"
    public void onTextChanged(CharSequence s, int start, int before, int count) {       
    }
    public void afterTextChanged(Editable s) {

        if (s.toString().equals(empty)) {
            editText$.setOnKeyListener(new OnKeyListener() {                 
                public boolean onKey(View v, int keyCode, KeyEvent event) {                 
                     if(keyCode == KeyEvent.KEYCODE_DEL){                        
                           return true; //Disable backspace key here
                         }                  
                return false;       
                    }
            });         
        }       
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }
  });

除了两个关键问题之外,这可行:

1) 我只能弄清楚如何检查特定字符(“1”)与我想检查的任何一个字符。我已经尝试过String empty = "1" + "2" + "etc";,但是当我这样做时代码不再有效,而且,这似乎是一种低效的方式来完成这项任务。

2) 当EditText 有类似 134 的值时,即使“1”不是唯一的字符,退格键也会被禁用。显然,如果“1”是第一个字符,其余的无关紧要。这是我的主要问题。

我知道有很多问题要问,但您可以提供任何帮助来帮助我解决这两个问题,我们将不胜感激。谢谢。

【问题讨论】:

    标签: java android string ime textwatcher


    【解决方案1】:

    你可以使用if (s.toString().length() == 1)来检测框是否只有1个字符,如果是则禁用按钮(如果是fale则启用它)。

    【讨论】:

    • 非常感谢!它就像一个魅力。对于这个问题的未来读者,我将 if 语句移至 onTextChanged 并且您必须添加一个 else 语句,如 Dororo 所说的启用退格按钮。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    相关资源
    最近更新 更多