我有一个EditText,用户应该以格式输入时间:hh:mm
。
当用户输入小时时,我想自动为编辑文本添加分号。我想到了像onKeyDown方法,它检查编辑文本是否包含两个数字,在这种情况下添加一个分号。这可能吗?如果是这样,怎么样?
答案 0 :(得分:2)
您需要使用完全符合您需要的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();
}
}
});
答案 1 :(得分:2)
editText.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {}
@Override
public void beforeTextChanged(CharSequence s, int start,int count,int after) {
}
@Override
public void onTextChanged(CharSequence s, int start,int before, int count) {
if(s.length() == 2)
editText.setText(S+":");
if(s.length() == 5) //(hh:mm) length is 5
editText.setEnabled(false); //it accept only 5 char.
}
});