android - 在 edittext 的开头追加文本

标签 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());
            }
        });

但这不起作用,我的设备在我输入编辑文本后立即挂起。

最佳答案

你导致无限循环是因为你从 afterTextChanged() 调用 setText(),然后 setText() 调用afterTextChanged() 等等等等。

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

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

这样您就不会一直调用 setText(),而且还会进行检查,这样您就不会在每次用户在 EditText 中键入内容时都添加“+91”。这种方法的一个缺点是,一旦“+91”自动插入到输入的开头,您就无法通过退格键删除它。

关于android - 在 edittext 的开头追加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38684756/

相关文章:

android - 如何在Android中检索SIM卡IMSI?

android - NDK 在哪里寻找库?

按任意键时android编辑文本隐藏在键盘下方

android - 选择什么 "android: inputType"?

android - 从编辑文本中获取十进制数

java - RecyclerView .addTextChangedListener 给出多个位置

android - Appium 切换应用程序无法运行

java - 编辑文本上的变量已更改监听器

java - 无法将 addTextChangedListener 与 TextWatcher 连接

android - 不支持 loadContainerPreferNonDefault JSONArray 的 Google 跟踪代码管理器错误