【问题标题】:How to disable entering numbers after zero in edittext?如何在edittext中禁用零后输入数字?
【发布时间】:2018-02-07 07:13:51
【问题描述】:

如何禁用edittext中零后输入的数字?

我仅对此进行了验证..

 if (TextUtils.isEmpty(strBalance)) {
                    Toast.makeText(TransactionSellINActivity.this, "Amount should not be empty", Toast.LENGTH_SHORT)
                            .show();
                } else if (strBalance.equalsIgnoreCase("0")) {
                    Toast.makeText(TransactionSellINActivity.this, "Amount should not be Zero", Toast.LENGTH_SHORT)
                            .show();
                }

但是如果用户输入 01 或 001 或 02,03 等,?即零后的数字? -> 我想限制这些数字

这种情况如何处理?

【问题讨论】:

  • 你想要 01 或 02 或者你不想 01 或 02 清晰..
  • 我不想用
  • 您是否尝试过使用startsWithlength等方法
  • 我已经更新了答案。

标签: java android android-layout android-edittext


【解决方案1】:
if (TextUtils.isEmpty(strBalance)) {
                Toast.makeText(TransactionSellINActivity.this, "Amount should not be empty", Toast.LENGTH_SHORT)
                        .show();
            } else if (strBalance.equalsIgnoreCase("0")) {
                Toast.makeText(TransactionSellINActivity.this, "Amount should not be Zero", Toast.LENGTH_SHORT)
                        .show();
            }
            else if(strBalance.indexOf("0")!=a.length()-1)
                {
                Toast.makeText(TransactionSellINActivity.this, "Amount Not Valid", Toast.LENGTH_SHORT)
                        .show();
                }
                else{
                    Toast.makeText(TransactionSellINActivity.this, "Amount  Valid", Toast.LENGTH_SHORT)
                        .show();
                }

【讨论】:

  • 这不会在 0 之后显示数字。
  • 是的。非常感谢。
【解决方案2】:

我想你想限制那些以 0 开头的数字。为此你必须使用.startsWith()

if (TextUtils.isEmpty(strBalance)) {
                Toast.makeText(TransactionSellINActivity.this, "Amount should not be empty", Toast.LENGTH_SHORT)
                        .show();
            } else if (strBalance.startsWith("0")) {
                Toast.makeText(TransactionSellINActivity.this, "Amount should not be Zero", Toast.LENGTH_SHORT)
                        .show();
            }

【讨论】:

    【解决方案3】:

    用户无法使用此代码在零后添加数字试试看

    Edittext.addTextChangedListener(new TextWatcher() {
    
            @Override
            public void onTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {
    
            }
    
            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1,
                    int arg2, int arg3) {
    
            }
    
            @Override
            public void afterTextChanged(Editable arg0) {
    
                if (Edittext.getText().toString().startsWith("0")
                        && Edittext.getText().length() > 1) {
    
                    Edittext.setText("0");
                    Edittext.setSelection(Edittext.getText().toString().length());
                }
            }
        });
    

    可能对你有用!!

    【讨论】:

      【解决方案4】:

      您也可以这样做,让用户输入任意数量的零。以下正则表达式将从字符串中删除前导零,然后您可以继续处理您的字符串。

      if (!TextUtils.isEmpty(strBalance) && Integer.parseInt(strBalance) > 0) 
      {
              strBalance=strBalance.replaceFirst("^0+(?!$)", "")       
      }
      

      【讨论】:

        【解决方案5】:
        private EditText  mEt;//your edittext
        private TextWatcher mMoneyWatcher = 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 (!s.toString.isEmpty()) {
                    mPayEtValue.removeTextChangedListener(mMoneyWatcher);
                    if (s.toString.charAt(0)=='0') {
                      mEt.setText(s.toString.substring(1,s.length()));  
                    }
        
                    mEt.addTextChangedListener(mMoneyWatcher);
                }
            }
        
            @Override
            public void afterTextChanged(Editable s) {
        
            }
        };
        mEt.addTextChangedListener(mMoneyWatcher);
        

        【讨论】:

        • 什么是 mPayEtValue?
        • @Walter 对不起我的错误
        猜你喜欢
        • 2012-09-14
        • 2015-11-05
        • 1970-01-01
        • 2019-04-28
        • 1970-01-01
        • 1970-01-01
        • 2021-10-25
        • 2012-09-12
        • 2019-08-28
        相关资源
        最近更新 更多