edittext只能输入数字和小数点,且小数点后只能输入两位

时间:2022-11-07 09:58:55

1.在edittext的xml中输入属性

android:inputType="numberDecimal"

2.在edittext的监听中

  et_dollar.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) {
// numInt = TextUtils.isEmpty(num) ? 1 : Integer.parseInt(num);
//优惠券必须要达到的金额Integer.parseInt(fullPrice);

if (s.toString().contains(".")) {
if (s.length() - 1 - s.toString().indexOf(".") > 2) {
s = s.toString().subSequence(0,
s.toString().indexOf(".") + 3);
et_dollar.setText(s);
et_dollar.setSelection(s.length());
}
}
if (s.toString().trim().substring(0).equals(".")) {
s = "0" + s;
et_dollar.setText(s);
et_dollar.setSelection(2);
}

if (s.toString().startsWith("0")
&& s.toString().trim().length() > 1) {
if (!s.toString().substring(1, 2).equals(".")) {
et_dollar.setText(s.subSequence(0, 1));
et_dollar.setSelection(1);
return;
}
}

if(s.toString().trim().substring(0,1).equals(".") || s.toString().trim().substring(s.toString().trim().length()-1,s.toString().trim().length()).equals(".")){
return;
}
float couponPrice = TextUtils.isEmpty(fullPrice) ? 0 : Float.parseFloat(fullPrice);
//输入的面值
float price = TextUtils.isEmpty(s) ? 0 : Float.parseFloat(s.toString());
//优惠卷的面值
float intfacePrice = TextUtils.isEmpty(facePrice) ? 0 : Float.parseFloat(facePrice);
if(price < couponPrice){
mCoupon.setVisibility(View.GONE);
tv_price.setText(null);
mPayText.setText(String.valueOf(price));
couponId = "0";
fullPrice =null;
facePrice = null;
}else {
mPayText.setText(String.valueOf(price - intfacePrice));
}
}
@Override
public void afterTextChanged(Editable s) {


}
});
}