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”,就不能通过退格键删除它。
| 归档时间: |
|
| 查看次数: |
3077 次 |
| 最近记录: |