java - 如何在EditText中添加数字分隔符

标签 java android android-edittext

我有一个 Edittext 并想设置 EditText,以便当用户输入要转换的数字时,应该实时将千位分隔符 (,) 添加到数字中。但我想在“onTextChanged”中执行此操作”方法不在“afterTextChanged”方法中。我该怎么办?

public class NumberTextWatcherForThousand implements TextWatcher {

EditText editText;


public NumberTextWatcherForThousand(EditText editText) {
    this.editText = editText;


}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {

}

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

}

@Override
public void afterTextChanged(Editable view) {
String s = null;
try {
    // The comma in the format specifier does the trick
    s = String.format("%,d", Long.parseLong(view.toString()));
    edittext.settext(s);
} catch (NumberFormatException e) {
}

最佳答案

试试这段代码:

 et.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                // TODO Auto-generated method stub

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
                et.removeTextChangedListener(this);

                try {
                    String givenstring = s.toString();
                    Long longval;
                    if (givenstring.contains(",")) {
                        givenstring = givenstring.replaceAll(",", "");
                    }
                    longval = Long.parseLong(givenstring);
                    DecimalFormat formatter = new DecimalFormat("#,###,###");
                    String formattedString = formatter.format(longval);
                    et.setText(formattedString);
                    et.setSelection(et.getText().length());
                    // to place the cursor at the end of text
                } catch (NumberFormatException nfe) {
                    nfe.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }

                et.addTextChangedListener(this);

            }
        });

关于java - 如何在EditText中添加数字分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54686205/

相关文章:

java - 如何使用延迟初始化? [延迟初始化异常]

java - android: fragment 未加载 fragment AsyncTask ArrayAdapter

android - 在 android 中更改编辑文本的 addTextChangedListener 监听器中的文本会出错

Android Edit Text Some Text Always there 不可编辑

java - ListView 中的多个复选框?

java - 使用 android 从 stripe 生成银行帐户 token

java - 做运营商而不是整个订阅者

android - 可以在xml中设置setDisplayShowTitleEnabled来为ActionBar设置主题吗?

android - 在同一 Activity 中多次显示相同的 'Ad unit ID' 广告是否可以?

android - 将 EditText 限制为 2 个字符