我有一个 EditText,用户应该以以下格式输入时间:hh:mm
。
当用户输入小时后,我想自动在编辑文本中添加一个分号。我想到了类似 onKeyDown 的方法来检查编辑文本是否由两个数字组成,在这种情况下添加一个分号。这可能吗?如果是,怎么办?
最佳答案
您将需要使用完全满足您需要的 TextWatcher
。基本上它有 3 个方法:beforeTextChanged()
、onTextChanged()
、afterTextChanged()
。
前两个方法不用于更改 EditText 内部的文本,它们仅用于跟踪对文本所做的更改。 最后一个 是我们可以修改和设置文本样式的方法。代码看起来像这样:
String text = "";
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
// work with editable here and add :
String newValue = editable.toString();
if (newValue.length() > text.length()) {
text = editable.toString();
if (text.length() == 2) {
yourEditText.setText(text + ":");
}
}
else if (newValue.length() < text.length()) {
text = editable.toString();
}
}
});
关于Android Studio 添加文本以编辑按键上的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41463639/