📅  最后修改于: 2023-12-03 15:09:44.304000             🧑  作者: Mango
在Android开发过程中,经常需要使用 EditText 来获取用户输入的数据。EditText 默认只支持整数输入。如果需要支持浮点数输入,需要进行一些额外的设置。本文将介绍如何创建带有浮点数的 EditText。
在布局文件中创建 EditText,设定 android:inputType 属性为“numberDecimal”。例如:
<EditText
android:id="@+id/editTextNumberDecimal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter a number (decimal)"
android:inputType="numberDecimal" />
在代码中,可以直接获取 EditText 中的浮点数数据。例如:
EditText editText = findViewById(R.id.editTextNumberDecimal);
float number = Float.parseFloat(editText.getText());
这样就可以获取 EditText 中的浮点数数据。
如果需要支持负数输入,可以设定 android:inputType 属性为“numberDecimal|numberSigned”。例如:
<EditText
android:id="@+id/editTextNumberDecimalSigned"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter a number (decimal, signed)"
android:inputType="numberDecimal|numberSigned" />
在代码中,可以直接获取 EditText 中的带有正负号的浮点数数据。例如:
EditText editText = findViewById(R.id.editTextNumberDecimalSigned);
float number = Float.parseFloat(editText.getText());
如果需要支持小数点后指定位数的输入,可以借助 InputFilter 实现。例如:
public class DecimalDigitsInputFilter implements InputFilter {
private final int decimalDigits;
public DecimalDigitsInputFilter(int decimalDigits) {
this.decimalDigits = decimalDigits;
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
StringBuilder builder = new StringBuilder(dest);
builder.replace(dstart, dend, source.subSequence(start, end).toString());
if (!builder.toString().matches("(([1-9]{1})([0-9]{0,6})?)?(\\.[0-9]{0," + decimalDigits + "})?")) {
if (source.length() == 0) {
return dest.subSequence(dstart, dend);
} else {
return "";
}
}
return null;
}
}
以上代码会限制输入到 EditText 中的小数点后部分为 decimalDigits 位,如果输入超过了限制范围,就会自动被过滤掉。在使用 EditText 时,只需要设定 InputFilter,就可以实现小数点后指定位数的输入。例如:
EditText editText = findViewById(R.id.editTextNumberDecimalDigits);
editText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)});
以上代码实现了支持小数点后两位的输入。
以上就是创建带有浮点数的 EditText 的方法,通过这些方法,可以方便地获取用户输入的浮点数数据,以及限制输入的范围和格式。