一、概述
发现输出产品价格的时候不能简单的设置android:inputType为number或者numberDecimal,因为这样不能输入小数或者小数位能够输入多个,这样不符合实际生活需求,所以只能限制输入两位。
二、实现
主要是借助addTextChangedListener进行监听输入文本框的内容,声明一个textWatcher来执行监听,
前提是设置文本输入类型为: android:inputType="numberDecimal"
....
txt_productPrice.addTextChangedListener(textWatcher);
....
private TextWatcher textWatcher = 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) {
String editStr = editable.toString().trim();
int posDot = editStr.indexOf(".");
//不允许输入3位小数,超过三位就删掉
if (posDot < 0) {
return;
}
if (editStr.length() - posDot - 1 > 2) {
editable.delete(posDot + 3, posDot + 4);
} else {
//TODO...这里写逻辑
}
}
};
一般存储和使用时候借助
DecimalFormat df = new DecimalFormat("0.00");
df.format(doubleData)
参考文章