【发布时间】:2012-03-09 05:03:29
【问题描述】:
如何强制 EditText 只接受数字?
【问题讨论】:
-
惊人的答案:)
如何强制 EditText 只接受数字?
【问题讨论】:
在您的布局 XML 中使用 android:inputType="number"
【讨论】:
这也很好用:
android:digits="0123456789"
【讨论】:
或者您可以添加以下内容:
yourEditText.setInputType(InputType.TYPE_CLASS_NUMBER |
InputType.TYPE_NUMBER_FLAG_DECIMAL |
InputType.TYPE_NUMBER_FLAG_SIGNED);
这将接受数字、浮点数和 您可以根据需要删除任何负数
【讨论】:
您可以在 XML 文件中使用 android:inputType="number"。您也可以指定其他值,例如 numberDecimal。
此外,您可能还想将android:singleLine="true" 用于单行Edittext。
另外,请查看android:numeric 和android:maxLength。 maxLength 特别适用于设置长度限制。
【讨论】:
如果您需要支持十进制数字,请使用:
android:inputType="numberDecimal"
【讨论】:
这是最终的解决方案:
public static void enforceEditTextUseNumberOnly(EditText field) {
Typeface existingTypeface = field.getTypeface();
field.setInputType((InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD));
field.setTransformationMethod(new NumericKeyBoardTransformationMethod());
field.setTypeface(existingTypeface);
if (field.getParent().getParent() instanceof TextInputLayout) {
((TextInputLayout) field.getParent().getParent()).setPasswordVisibilityToggleEnabled(false);
}
}
private static class NumericKeyBoardTransformationMethod extends PasswordTransformationMethod {
@Override
public CharSequence getTransformation(CharSequence source, View view) {
return source;
}
}
【讨论】: