【问题标题】:How to block user from inputing a specific character on a EditText如何阻止用户在 EditText 上输入特定字符
【发布时间】:2016-12-30 13:32:36
【问题描述】:

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

我尝试过使用InputFilter,但是当我调用setText 时,. 字符不显示。我也尝试在xml 中设置digits 参数,但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 != '.';

      }

  };

}

【问题讨论】:

  • 如果你在 xml 中设置了 InputFilterandroid:digits 你不能允许被阻塞的字符。

标签: java android android-edittext input-filter


【解决方案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....");

【讨论】:

    【解决方案2】:

    试试这个:

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

    现在进入 .您可以显示消息或其他内容。也可以将此代码放在 onTextChanged 方法(文本观察器)下。

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      EditText 中 xml 中的用户数字属性

      android:digits="0123456789"
      

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

      【讨论】:

        猜你喜欢
        • 2019-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-18
        相关资源
        最近更新 更多