Android在运行时获取EditText输入类型



我有一个编辑文本类的自定义实现。

基于这些XML属性.....

android:inputType="textPersonName"
android:inputType="textPersonName"
android:inputType="textEmailAddress"
android:inputType="textPassword"

我希望能够知道这在运行时(在Java代码)

我找到了这个方法,它给了我输入类型

getInputType()

这些是基于我上面发布的XML返回的值。

97、97、33129

但是,这些不对应这里列出的常数值

http://developer.android.com/reference/android/text/InputType.html

如何在运行时知道编辑文本的输入类型?

您得到的数字是十进制数。例如textPassword具有十六进制的恒定值0x00000081。当你把它转换成十进制时,它会得到129

因此你得到的输出是完美的。

参考此列表查找所有输入类型及其十六进制值。

如何从EditText中获取InputType

使用getInputType()获取输入类型

int inputTypeValue = editText.getInputType();

InputType值在文档中定义(十六进制)。

你可以用类似

的东西来测试这些值
if (inputTypeValue == InputType.TYPE_CLASS_TEXT) { ... }

参见

  • 设置InputType

请看这个链接。您可以看到,您得到的确切数字是通过'OR'这两个常量:

https://developer.android.com/reference/android/widget/TextView attr_android % 3 ainputtype

想用InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS获取textEmailAddress, [OR] InputType.TYPE_CLASS_TEXT的值

如:InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS .

请参阅代码:

String strInputType;
            final int inputType = editText.getInputType();
            switch (inputType) {
                case (InputType.TYPE_TEXT_FLAG_CAP_WORDS|InputType.TYPE_CLASS_TEXT): {
                    strInputType = "Name ";
                }
                break;
                case (InputType.TYPE_TEXT_VARIATION_PASSWORD|InputType.TYPE_CLASS_TEXT): {
                    strInputType = "Password or Confirm Password ";
                }
                break;
                case (InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS|InputType.TYPE_CLASS_TEXT): {
                    strInputType = "Email ";
                }
                break;
                case InputType.TYPE_CLASS_PHONE: {
                    strInputType = "Phone Number ";
                }
                break;
                case InputType.TYPE_CLASS_DATETIME: {
                    strInputType = "Date ";
                }
                break;
                case InputType.TYPE_CLASS_NUMBER: {
                    strInputType = "Number ";
                }
                break;
                case InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS: {
                    strInputType = "Address ";
                }
                break;
                default: {
                    strInputType = "Field ";
                }
                break;
            }
            Resources res = baseActivity.getResources();
            String message = res.getString(R.string.field_blank, strInputType);

编码快乐!

最新更新