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 只接受几个字符的主要内容,如果未能解决你的问题,请参考以下文章