1 只允许输入小数点后面最多两位(editText监听,用时直接将editText传入即可)
public static void setPricePoint(final EditText editText) {
editText.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().contains(".")) {
if (s.length() - 1 - s.toString().indexOf(".") > 2) {
s = s.toString().subSequence(0, s.toString().indexOf(".") + 3);
editText.setText(s);
editText.setSelection(s.length());
}
}
if (s.toString().trim().substring(0).equals(".")) {
s = "0" + s;
editText.setText(s);
editText.setSelection(2);
}
if (s.toString().startsWith("0") && s.toString().trim().length() > 1) {
if (!s.toString().substring(1, 2).equals(".")) {
editText.setText(s.subSequence(0, 1));
editText.setSelection(1);
return;
}
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void afterTextChanged(Editable s) {
}
});
}
2获得小数点后面位数长度(可以在监听事件afterTextChanged方法中,监听输入后的小数点长度)。如下et_length便是小数点后面长度。
@Override
public void afterTextChanged(Editable s) {
Stringmoney = editText.getText().toString();
BigDecimalbigDecimal = new BigDecimal(String.valueOf(money));
et_length = bigDecimal.scale();
Log.e("AAA", "length = " + et_length);
}
3 EditText只允许输入数字和小数点类型
<EditTextandroid:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
/>