如何防止editText添加"。"如果初始化只接受浮点值?

时间:2015-08-27 20:28:44

标签: java android android-edittext

editText已初始化为接受浮动值,如下所示

Xml中的EditText

 <EditText
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:id="@+id/editText"
    android:layout_gravity="center_horizontal"
    android:inputType="numberDecimal"
    android:padding="10dp"
    style="@style/AlertDialog.AppCompat"
    android:hint="enter value"
    android:autoText="false"
    android:theme="@style/dialog_blue_button" />

我希望防止输入=&#34;。&#34;如下

用户添加输入的onClick事件

   @Override
public void onClick(View v) {
    if (v.getId() == R.id.ok) {
        String text = edit.getText().toString();
        if (!text.matches("") && !text.matches(".")) {

            float s = Float.parseFloat(edit.getText().toString());
            if (s > 0) {
                communicator.input(s);
                dismiss();
            }
        }
    } else {
        dismiss();
    }

}

问题 此代码阻止用户输入单个整数,例如1或8不被接受但是12接受

2 个答案:

答案 0 :(得分:2)

尝试使用您的代码:

@Override
  public void onClick(View v) {
      if (v.getId() == R.id.ok) {
          String text = edit.getText().toString();
          if (!text.equals("") && !text.equals(".")) {

              float s = Float.parseFloat(edit.getText().toString());
              if (s > 0) {
                  communicator.input(s);
                  dismiss();
              }
          }
      } else {
          dismiss();
      }

  }

答案 1 :(得分:2)

像这样改变:

if (!text.isEmpty() && !text.matches("^\\.$"))

^\\. $ ^表示字符串的开头。由于.是一个特殊字符,它将匹配任何字符,您必须使用\\来转义它。 $表示字符串的结尾。这个正则表达式只匹配一个只包含一个点的字符串。