在6个字母后自动在EditText中添加字符

问题描述 投票:5回答:4

我希望在我的EditText中自动在6个字母后加上“ - ”,我希望用户可以在“ - ”之后继续写。 (我希望用户写道:1234562,它在EditText中显示为123456-2)。

但我不知道如何做到这一点,如果可能的话。如果你可以帮助我,谢谢

android android-edittext
4个回答
11
投票

添加一个textwatcher。然后使用以下代码:

@Override
public void afterTextChanged(Editable text) {     


    if (text.length() == 6) {
        text.append('-');
    }


}

您还可以在if语句中使用多个条件,如:

 if (text.length() == 3 || text.length() == 6) {
        text.append('-');
    }

2
投票
EditText editText = (EditText) findViewById(R.id.search);

editText.addTextChangedListener(new TextWatcher() {          
                    @Override
                    public void onTextChanged(CharSequence s, int start, int before, int count) {                                   


                    }                       
                    @Override
                    public void beforeTextChanged(CharSequence s, int start, int count,
                            int after) {
                        // TODO Auto-generated method stub                          
                    }                       
                    @Override
                    public void afterTextChanged(Editable text) {
                        // TODO Auto-generated method stub                          
                          if (text.length() == 6) {
                          text.append('-');
    }  
                    }
                });

2
投票
EditText editText = (EditText) findViewById(R.id.editText1);
editText.addTextChangedListener(new TextWatcher() {
    @Override
    public void afterTextChanged(Editable s) { 
        String text = editText.getText().toString(); 
        if(text.length() == 6){
            editText.append("-");
        }
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {

    }
});

1
投票

你也可以用这个删除字符:

text.addTextChangedListener(new TextWatcher() {
        int first = 0;
        int second;

        @Override
        public void afterTextChanged(Editable s) {
            second = first;
            first = s.length();

            if(text.length()==6 && first>second){
                text.append("-");
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.