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接受
答案 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("^\\.$"))
^\\. $
^
表示字符串的开头。由于.
是一个特殊字符,它将匹配任何字符,您必须使用\\
来转义它。
$
表示字符串的结尾。这个正则表达式只匹配一个只包含一个点的字符串。