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

Android studio添加文本以在按下键时编辑文本,android,Android,我有一个编辑文本,用户应该在其中以以下格式输入时间:hh:mm。 当用户输入小时后,我想在编辑文本中自动添加分号。我想到了一个类似onKeyDown的方法,它检查编辑文本是否由两个数字组成,在这种情况下,添加一个分号。这可能吗?如果是这样,怎么做?您将需要使用TextWatcher,这正是您所需要的。基本上它有三种方法:beforeTextChanged(),onTextChanged(),posterextchanged() 前两种方法不用于更改EditText内部的文本,它们只是用于跟踪对文

我有一个编辑文本,用户应该在其中以以下格式输入时间:
hh:mm

当用户输入小时后,我想在编辑文本中自动添加分号。我想到了一个类似onKeyDown的方法,它检查编辑文本是否由两个数字组成,在这种情况下,添加一个分号。这可能吗?如果是这样,怎么做?

您将需要使用
TextWatcher
,这正是您所需要的。基本上它有三种方法:
beforeTextChanged()
onTextChanged()
posterextchanged()

前两种方法不用于更改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();
            }
        }
    });
String text=”“;
yourEditText.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前的公共无效(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void onTextChanged(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void PostTextChanged(可编辑){
//在此处使用“可编辑”并添加:
字符串newValue=editable.toString();
if(newValue.length()>text.length()){
text=可编辑的.toString();
如果(text.length()==2){
yourEditText.setText(text+“:”);
}
}
else if(newValue.length()
您需要使用能满足您需求的
TextWatcher
。基本上它有三种方法:
beforeTextChanged()
onTextChanged()
posterextchanged()

前两种方法不用于更改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();
            }
        }
    });
String text=”“;
yourEditText.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前的公共无效(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void onTextChanged(CharSequence CharSequence,int i,int i1,int i2){
}
@凌驾
public void PostTextChanged(可编辑){
//在此处使用“可编辑”并添加:
字符串newValue=editable.toString();
if(newValue.length()>text.length()){
text=可编辑的.toString();
如果(text.length()==2){
yourEditText.setText(text+“:”);
}
}
else if(newValue.length()
可能的重复,可能的重复,这很有效。我有一个问题,如果我输入了“13:30”并想删除它,当我删除分号时,它会再次打印出分号,因为文本更改后有两个数字。我试着搜索这个,但找不到任何有效的东西,我想要像if(keyCode!=KeyEvent.keyCode_DEL)@SimonAndersson这样的东西我已经更新了我的答案。仔细看一看这工作做得很好。我有一个问题,如果我输入了“13:30”并想删除它,当我删除分号时,它会再次打印出分号,因为文本更改后有两个数字。我试着搜索这个,但找不到任何有效的东西,我想要像if(keyCode!=KeyEvent.keyCode_DEL)@SimonAndersson这样的东西我已经更新了我的答案。仔细看看