在edittext开头附加文本

And*_*per 4 android android-edittext addtextchangedlistener

如何在用户开始键入文本后立即在edittext开头自动添加文本。例如,我想在用户开始键入电话号码后自动附加国家/地区代码。我试过了-

      mNumber.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) {
            mNumber.setText("+91"+editable.getText().toString());
            }
        });
Run Code Online (Sandbox Code Playgroud)

但这不起作用,并且在我输入edittext时我的设备就会挂起。

小智 7

您正在造成无限循环,因为您是setText()从调用的afterTextChanged(),然后setText()是调用的afterTextChanged(),依此类推。

您可以更改afterTextChanged()为以下内容,

public void afterTextChanged(Editable s) {
    if(!s.toString().startsWith("+91")){
        s.insert(0, "+91");
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,您就不会setText()一直在打电话,而且检查也在那里,因此您每次用户在EditText中键入内容时都不会添加“ +91”。这种方法的一个缺点是,一旦在输入的开头自动插入了“ +91”,就不能通过退格键删除它。