android开发之EditText金额输入只能两位小数点
直接上代码:
/**
* 监听输入最小金额为0.01
* 且只能输入两位小数
*/
private void listenerMoney() {
etGoodPrice.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (TextUtils.isEmpty(s.toString())) {
return;
}
// 判断小数点后只能输入两位
if (s.toString().contains(".")) {
if (s.length() - 1 - s.toString().indexOf(".") > 2) {
s = s.toString().subSequence(0, s.toString().indexOf(".") + 3);
etGoodPrice.setText(s);
etGoodPrice.setSelection(s.length());
}
}
//如果第一个数字为0,第二个不为点,就不允许输入
if (s.toString().startsWith("0") && s.toString().trim().length() > 1) {
if (!s.toString().substring(1, 2).equals(".")) {
etGoodPrice.setText(s.subSequence(0, 1));
etGoodPrice.setSelection(1);
return;
}
if (s.toString().length() == 4) {
//针对输入0.00的特殊处理
if (Double.valueOf(s.toString()) < 0.01) {
Toast.makeText(mContext, "最小为0.01", Toast.LENGTH_SHORT).show();
etGoodPrice.setText("0.01");
etGoodPrice.setSelection(etGoodPrice.getText().toString().trim().length());
}
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
看效果图: