如何阻止用户在EditText

时间:2016-12-30 13:32:37

标签: java android android-edittext input-filter

我需要阻止用户在数字.上输入键盘上的EditText(句点)字符,但我需要能够在同一EditText上使用它通过setText方法。

我已尝试使用InputFilter,但当我致电setText时,.字符不会显示。我还尝试在digits中设置xml参数,但setText也不起作用。

有办法做到这一点吗?

这是我的InputFilter代码:

public static InputFilter blockPeriod(){

    return new InputFilter() {
      @Override
      public CharSequence filter(CharSequence charSequence, int i, int i1, Spanned spanned, int i2, int i3) {

          for (int j = i; j <i1 ; j++) {

              char c = charSequence.charAt(j);
              if (!allowed(c)){

                  return "";

              }

          }

          return null;
      }

      private boolean allowed(char c){

          return c != '.';

      }

  };

}

3 个答案:

答案 0 :(得分:1)

您可以使用InputFilter执行此操作,但在调用setText()方法时需要允许它一段时间。

private static class AllowableInputFilter implements InputFilter {
    private boolean mAllowDot;

    public void setAllowDot(boolean toAllow) {
      mAllowDot = toAllow;
    }

    ....


    private boolean allowed(char c){
      return mAllowDot || c != '.';
    }
}

public void forceText(String text) {
  mInputFilter.setAllowDot(true);
  mEditText.setText(text);
  mInputFilter.setAllowDot(false);
}

mInputFilter = new AllowableInputFilter();
mInputFilter.setAllowDot(false);

mEditText.setFilters(new InputFilter[] {mInputFilter});

forceText("Okaaayy....");

答案 1 :(得分:0)

试试这个:

 if (textedit.getText().toString().startsWith(".")){
//Do something about it

}

现在进入。你可以显示一条消息或其他东西。也可以将此代码放在onTextChanged方法(文本观察者)下。

希望它可以帮助你。

答案 2 :(得分:0)

EditText中xml内的用户数字属性

android:digits="0123456789"

所以现在edittext只允许从0到9的数字