java - 如何使逗号只能进入 EditText 一次?

标签 java android

我已经为某件事工作了很长一段时间,但就是无法完成。我的问题是我有一个 EditText,我希望用户能够在其中输入十进制数(例如 3,95 或 3.95)。我将 inputType 设置为 numberDecimal,并尝试将数字限制为“0123456789,”。但它要么不让用户输入逗号,要么让用户输入大量逗号。我希望用户只能输入一个分隔符(无论是“.”还是“,”)。谁能帮我解决这个问题?

最佳答案

实时检查格式。

1. replace , => .
2. cast to double
if casting fails, go back to backuped string.

在布局 xml 中:

<EditText
    android:id="@+id/editText"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:inputType="numberDecimal"
    android:digits="0123456789.,"/>

在java

final EditText editText = (EditText) findViewById(R.id.editText);
        editText.addTextChangedListener(new TextWatcher() {
            String sBackup;

            @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 editable) {
                double value;
                try {
                    if (editable.toString().equals("") == false) {
                        value = Double.valueOf(editable.toString().replace(',', '.'));
                        sBackup = editable.toString();
                    }
                } catch (Exception e) {
                    editText.setText(sBackup);
                    editText.setSelection(editText.getText().toString().length());
                }
            }
        });

关于java - 如何使逗号只能进入 EditText 一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46770400/

相关文章:

android - 从套接字而不是 SocketServer 上的字符串接收十六进制值

android - TextView 回车不起作用

android - 如何将一个 JSON 对象子对象序列化为一个字段?

java infinispan 最简单的例子

java - Spring Boot 在提供 JSP 内容时无限期挂起

java - ScheduledThreadPoolExecutors 和自定义队列

android - android中的服务和应用程序之间共享资源

android - 在android中绘制图片

java - Controller 中的错误身份验证对象 [Spring-Boot]

java - 在 Eclipse 中开发 Android 应用程序时,如何将文件传输到模拟设备的 SD 卡?