Android studio添加文本以在按键上编辑文本

时间:2017-01-04 12:17:04

标签: android

我有一个EditText,用户应该以格式输入时间:hh:mm。 当用户输入小时时,我想自动为编辑文本添加分号。我想到了像onKeyDown方法,它检查编辑文本是否包含两个数字,在这种情况下添加一个分号。这可能吗?如果是这样,怎么样?

2 个答案:

答案 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.
}
});