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

时间:2018-07-26 12:40:19

标签: android android-layout android-edittext

 <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功能,因此需要帮助

1 个答案:

答案 0 :(得分:0)

您可以将过滤器设置为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()});