抱歉,我的标题太长了,我找不到其他方式来表达它。因此,我有一个 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”是第一个字符,那么其余的是什么并不重要。这是我的主要问题。
我知道这是一个很多问题,但如果您能提供任何帮助来帮助我解决这两个问题,我们将不胜感激。谢谢。
最佳答案
您可以使用 if (s.toString().length() == 1)
来检测该框是否只有 1 个字符,如果为 true,则禁用该按钮(并启用它如果是假的话)。
关于java - 当 EditText 中只有一个字符时防止退格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419036/