EditText 只接受几个字符

Posted

技术标签:

【中文标题】EditText 只接受几个字符【英文标题】:EditText which accepts only a few characters 【发布时间】:2016-07-01 19:48:21 【问题描述】:

我需要在 android 上实现一个EditText,它只接受特定范围的字符,即:“S,A,Q,W,R,B,C,D,E,U”。

【问题讨论】:

"edittext 不应接受任何其他字符,除了在 android 中给出字符。"你这是什么意思??? 你想让你的编辑文本只接受来自这些字符“S,A,,B,C,D,E,U”的字符吗??? edittext 不应接受 android 中给定字符以外的任何其他字符。我需要java代码。 【参考方案1】:

在你的EditText中使用这两个属性怎么样

android:maxLength="1"
android:digits = "SABCDEU"

【讨论】:

这不会导致预期的行为。见this gif。 fooF 导致不输入任何文本,而 FooF 只输入 F 一次。似乎这仅在您键入的第一个字符是请求的字符时才有效。如果您以不允许的开头,则不会输入任何文本。 (这是maxLength="1"digits="TF" 我刚刚找到了解决上述问题的方法。如果你设置android:inputType="textNoSuggestions"这个问题就解决了,可以使用Shree的代码【参考方案2】:

只需使用属性android:maxLength="1",这将只允许输入一个字符来编辑文本。

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

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

【讨论】:

【参考方案3】:

你应该使用 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 "";
    
);

【讨论】:

【参考方案4】:

是的,如下:

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

【讨论】:

【参考方案5】:

如果你想设置edittext应该接受的最大字符数,那么使用这个:

 android:maxLength="1" 

如果你想设置edittext应该接受的特定字符,那么使用这个:

android:digits = "character you want to accept"

在你的情况下:

android:digits = "SABCDEU"

这里请注意,edittext 将不接受数字字符、空格、小写和大写,除了 SABCDEU。如果您想进入edittext,您必须将所有字符放入android:digits=""

【讨论】:

【参考方案6】:

只需在您的 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”。

【讨论】:

【参考方案7】:

使用此代码,它只允许字符

<EditText 
android:inputType="text" 
android:digits="SAQWRBCDEU"
android:hint="Only letters allowed" />

【讨论】:

请编辑更多信息。不建议使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。

以上是关于EditText 只接受几个字符的主要内容,如果未能解决你的问题,请参考以下文章

如何强制EditText只接受数字?

如何使 EditText 接受格式输入:

如何在 android EditText 中强制使用英文键盘

Android EditText - 只允许一个小数分隔符

设置 EditText 以设置电话号码值

怎么将edittext的内容发表到listview