【发布时间】:2016-01-06 14:42:32
【问题描述】:
我正在尝试制作editText,我在其中插入一些文本。在每三个字符之后,我想插入破折号。
例子:
类型:123
结果:123-
现在,当光标在破折号后面并且您按删除时,我想删除破折号和破折号后面的字符。 例如:
123-
删除键后的结果:12。 怎么做。谢谢你的建议。
编辑
我的代码是:
EditText editText;
boolean keyDel = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
editText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DEL) {
keyDel = true;
}
return keyDel;
}
});
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) {
String str = s.toString();
System.out.println(str.length());
if (str.length() == 3) {
str = str + "-";
} else if (str.length() == 7) {
str = str + "-";
} else if (str.length() % 4 == 0 && keyDel == true) {
str = str.substring(0, str.length() - 2);
} else {
return;
}
editText.setText(str);
editText.setSelection(editText.getText().length());
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
我发现 Android 4.4.2 和 higer 不支持 keyevent。
【问题讨论】: