天天看点

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

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) {


       }
   });
}