当用户点击“DEL”键(在屏幕键盘上)时,我正在尝试修改操作,这是代码
ed.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
if(contadorcor == 0){
String output = correctOutput(String.valueOf(ed.getText()));
ed.setText(output);
ed.setSelection(num);
contadorcor++;
}
}
contadorcor = 0;
return false;
}
});
public static String correctOutput(String s) {
String input = s;
int pos = 0;
for (int i = 0; i < input.length(); i++) {
if(input.charAt(i) != ' ') {
if(input.charAt(i) != '_') {
pos = i;
}
}
}
String output = "";
for (int i = 0; i < input.length(); i++) {
if(i != pos) {
output = output + String.valueOf(input.charAt(i));
} else {
output = output + "_";
}
}
num = num - 2;
return output;
}
要理解为什么我这样做是因为有一个像“_ _ _ _ _ _ _ _ .....”这样的未知单词,当用户在试图猜测它时删除一个字母时,让我们说“THISIK” | _ _ ...“并且想要纠正”K“并且光标正好在下一个”下划线“的开头我想删除”k“并用”下划线“替换它然后将光标放在那里。 “T H I S I | _ _ _ _ ....”
但是当我按下删除键使此操作两次,并删除2个字母。我认为捕获keydown和keyup,这就是为什么它重复,但我不知道如何解决它。我试着做一些反击,但它不起作用
提前致谢。
答案 0 :(得分:2)
在onKey方法中,你有一个参数:event。您可以执行以下操作:
if(event.getAction()==KeyEvent.ACTION_UP){
...
}
else if(event.getAction()==KeyEvent.ACTION_DOWN){
...
}