创建一个只接受数字的编辑文本,当我点击它时。它显示数字键盘。但我的问题是,当我从Whatsapp复制一个表情符号并将其粘贴到我的编辑文本框中时,它接受表情符号。我想要一个编辑文本,从其他应用程序复制后不允许接受表情符号,它应该只接受数字(通过键入或复制)注意:我不想禁用复制粘贴。
答案 0 :(得分:0)
在number
中执行此操作,将EditText设置为具有inputType XML
:
android:inputType="number"
或以编程方式:
yourEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
如果您要同时禁用复制,则应setInputFilter
向yourEditText
过滤掉非数字字符。
答案 1 :(得分:0)
只需将输入类型用作数字,不允许粘贴任何内容。
CURRENT_DATE-194
OR
<EditText
android:id="@+id/edtEnterAmount"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/enter_amount_margin"
android:textSize="@dimen/header_three"
android:singleLine="true"
android:maxLength="8"
android:inputType="numberDecimal"
android:imeOptions="actionDone"
android:hint="Enter amount"
android:textColorHint="@color/gray_two" />
OR
android:inputType="number"
OR
android:digits="0123456789"
希望这有帮助。快乐编码。
答案 2 :(得分:0)
您可以使用文本Change Listener并检查新添加的字符。
editText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
//check if all characters in CharSequence is a number
}
});
答案 3 :(得分:0)
您应该尝试在editText上使用InputFilter:
public static class NumericInputFilter implements InputFilter {
public CharSequence filter(CharSequence charSequence, int start, int end, Spanned dest, int dstart, int dend) {
StringBuilder builder = new StringBuilder();
for (int index = 0; index < end; index++) {
char character = charSequence.charAt(index);
if (Character.isDigit(character)) {
builder.append(character);
}
}
boolean isAllCharacterValid = (builder.length() == end - start);
return isAllCharacterValid ? null : builder.toString();
}
}
您可以通过以下方式在编辑文本上设置此输入过滤器:
editText.setFilters(new InputFilter[]{new NumericInputFilter()});
如果您使用此输入过滤器,无论您是复制粘贴字符还是使用键盘编写,每个字符都将被过滤,如果它不是数字,则它将不会显示在您的编辑文本中。< / p>
希望它有所帮助!
答案 4 :(得分:0)
您可以使用android:inputType="number"
或android:digits="0123456789"
答案 5 :(得分:0)
尝试添加
android:digits="0123456789"
到你的xml文件。
答案 6 :(得分:0)
@ user3707908
砰!它完美适合我........ 我把它修改为accpet&#34;。&#34;也。
public static class NumericInputFilter implements InputFilter {
public CharSequence filter(CharSequence charSequence, int start, int end, Spanned dest, int dstart, int dend) {
StringBuilder builder = new StringBuilder();
for (int index = 0; index < end; index++) {
char character = charSequence.charAt(index);
if (Character.isDigit(character)) {
builder.append(character);
} else if(Character.toString(character).equalsIgnoreCase(".")){
builder.append(character);
}
}
boolean isAllCharacterValid = (builder.length() == end - start);
return isAllCharacterValid ? null : builder.toString();
}
}