一、EditText只能输入2位小数及一个小数点
1.xml
代码如下(示例):
<EditText
android:layout_width="match_parent"
android:background="@null"
android:id="@+id/et_num"
android:inputType="numberDecimal"
android:layout_height="match_parent" />
2.java
代码如下(示例):
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
EditText editText = findViewById(R.id.et_num);
setEditTextChangedListener(editText)
}
private void setEditTextChangedListener(EditText editText) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
//直接输入. 插入为0.
if (".".equals(editable.toString().trim())) {
editText.setText("0.");
editText.setSelection(editText.getText().toString().length()); //光标移到最后
return;
}
//删除“.”后面超过2位后的数据
if (editable.toString().contains(".")) {
if (editable.length() - 1 - editable.toString().indexOf(".") > 2) {
editText.setText(editable.toString().subSequence(0,
editable.toString().indexOf(".") + 3));
editText.setSelection(editText.getText().toString().length()); //光标移到最后
return;
}
}
}
});
}
总结
xml属性设置 numberDecimal 仅输入数字和一个小数点
editText.addTextChangedListener 输入监听对直接输入小数点与小数点后输入多位做处理