天天看點

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


       }
   });
}