首页 > 解决方案 > 文本输入 EditText 数字不起作用?仅显示“abcxyz”之类的字符,并且还需要避免在edittext(TextInputLayout)中使用数字和符号

问题描述

 <android.support.design.widget.TextInputEditText
           android:id="@+id/value_text_input_edittext"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:background="@android:color/transparent"
           android:gravity="right"
           android:saveEnabled="false"
           android:textColor="@android:color/black"
           android:textColorHint="@android:color/black"
           android:textCursorDrawable="@null"
           android:inputType="text"
           android:textSize="14sp"
           android:digits="abcdefghijklmnopqrstuvwxyz"
           app:colorAccent="@android:color/black"
           app:font="@font/proxima_nova_semibold" />

我已经尝试过XML布局,pragmatically但它也无法使用其允许的数字和符号:

 valueTextInputEditText.setInputType(InputType.TYPE_CLASS_TEXT);
  valueTextInputEditText.setKeyListener(DigitsKeyListener.getInstance("abcdefghijklmnopqrstuvwxyz"));

我已经尝试过EditText它的工作正常,但正在我的项目中使用,TextInputLayout所以我需要TextInputLayout功能所以需要帮助

标签: androidandroid-layoutandroid-edittext

解决方案


您可以将过滤器设置为您的TextInputEditText. 试试下面的代码

 public class InputFilterCharacter implements InputFilter {

    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {

        if(isCharacter(source.toString()))
        {
            return source.toString();
        }
        return "";
    }

    private boolean isCharacter(String s) {
        return s.matches(".*[a-zA-Z]+.*");
    }

}

并设置你的过滤器

  TextInputEditText et = findViewById(R.id.value_text_input_edittext);

  et.setFilters(new InputFilter[]{new InputFilterCharacter()});

推荐阅读