【问题标题】:Android Get EditText Input Type At RuntimeAndroid 在运行时获取 EditText 输入类型
【发布时间】:2015-09-09 11:03:03
【问题描述】:

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

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

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

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

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

getInputType()

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

97,97,33,129

但是,这些与此处列出的常量值不对应

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

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

【问题讨论】:

标签: android android-edittext android-inputtype


【解决方案1】:

您得到的数字是十进制数字。例如 textPassword 具有十六进制的常量值 0x00000081。当您将其转换为十进制时,它将给出 129

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

请参阅 this 以查找所有输入类型及其十六进制值的列表。

【讨论】:

    【解决方案2】:

    如何从 EditText 中获取 InputType

    要获取输入类型,请使用getInputType()

    int inputTypeValue = editText.getInputType();
    

    InputType 值在 documentation 中定义(以十六进制表示)。

    你可以用类似的东西来测试值

    if (inputTypeValue == InputType.TYPE_CLASS_TEXT) { ... }
    

    另见

    【讨论】:

      【解决方案3】:

      请查看此链接。你会看到你得到的确切数字是对两个常量进行“或”运算:

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

      想得到textEmailAddress 的值,[OR] InputType.TYPE_CLASS_TEXTInputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS

      像这样: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);
      

      编码愉快!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-24
        • 2021-09-15
        • 1970-01-01
        相关资源
        最近更新 更多