仅允许输入少量字符的EditText

7

我需要在Android上实现一个EditText,只接受特定范围的字符输入,这些字符是:"S,A,Q,W,R,B,C,D,E,U"。


“edittext在Android中不应接受除给定字符以外的任何其他字符。” 这是什么意思? - Devraj
你想让你的EditText只接受这些字符"S,A,B,C,D,E,U"吗? - Devraj
EditText在Android中不应该接受除给定字符以外的任何其他字符。我需要Java代码。 - prabu S
7个回答

9

只需使用属性android:maxLength="1",这将允许仅输入一个字符到edittext。

您可以使用android:digits属性并在XML中指定您的有效字符。

 <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:digits = "SABCDEU"
        android:maxLength="1" >

9
在你的EditText中使用这两个属性如何?
android:maxLength="1"
android:digits = "SABCDEU"

这不会产生预期的行为。请参见 gif。fooF没有输入任何文本,而FooF只输入了一次F。似乎只有在您键入的第一个字符是所请求的字符时才有效。如果您从不允许的字符开始,则不会输入任何文本。(这是使用maxLength="1"digits="TF" - KamielDev
我刚刚找到了解决上述问题的方法。如果你设置 android:inputType="textNoSuggestions",这个问题就会得到解决,然后可以使用 Shree 的代码。 - KamielDev

1

您应该使用InputFilters

edittext.setFilters(new InputFilter[] {
new InputFilter() {
    public CharSequence filter(CharSequence src, int start,
            int end, Spanned dst, int dstart, int dend) {
        if(src.toString().matches("[a-zA-Z ]+")){
            return src;
        }
        return "";
    }
}});

0
只需在您的Java代码中添加这段代码即可。
 public class MainActivity extends Activity {

    private EditText editText;

    private String blockCharacterSet = "~#^|$%&*!FGHIJKLMOPTWXYZ";

    private InputFilter filter = new InputFilter() {

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

            if (source != null && blockCharacterSet.contains(("" + source))) {
                return "";
            }
            return null;
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = (EditText) findViewById(R.id.editText);
        editText.setFilters(new InputFilter[] { filter });
    }

}

这将给你想要的。这将让你只选择“S,A,Q,W,R,B,C,D,E,U”。

0
是的,如下所示:
<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="text"
    android:digits="SABCDEU"
    android:maxLength="1" > 

0
如果您想设置EditText应接受的最大字符数,则可以使用以下代码:
 android:maxLength="1" 

如果您想要设置EditText应该接受的特定字符,请使用以下代码:

android:digits = "character you want to accept"

在你的情况下:

android:digits = "SABCDEU"

请注意,EditText 不接受数字字符、空格、小写字母和大写字母(除了 SABCDEU)。如果您想要输入到 EditText 中,必须将所有字符放入 android:digits="" 中。


0
请使用此代码,它只允许字符。
<EditText 
android:inputType="text" 
android:digits="SAQWRBCDEU"
android:hint="Only letters allowed" />

请添加更多信息。不鼓励仅有代码和“试试这个”的答案,因为它们没有可搜索的内容,并且没有解释为什么某人应该“试试这个”。 - abarisone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接