【问题标题】:Difference between android:inputType="textPassword", "textVisiblePassword","textWebPassword" and "numberPassword" in android?android:inputType="textPassword"、"textVisiblePassword"、"textWebPassword"和"numberPassword"在android中的区别?
【发布时间】:2014-06-20 16:16:57
【问题描述】:

谁能解释一下两者的区别

   android:inputType="textPassword",
   android:inputType="textVisiblePassword",
   android:inputType="textWebPassword",
   android:inputType="numberPassword"

Android Layout 中的 EditText ViewGroup?

【问题讨论】:

标签: android android-layout android-edittext


【解决方案1】:

即使已经回答了,我也会在密码InputType 变体的差异上添加更多细节:

  1. android:inputType="textPassword":对应于TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD,即它允许您输入一个作为密码的字符串(隐藏并防止自动完成和建议,除非明确设置)。这个主要用于我们要输入密码的时候。
  2. android:inputType="textVisiblePassword":对应于TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD,与前一个相同,但密码是可见的(如果您想使用它来允许查看默认密码,因为它会阻止自动完成和建议,除非它们被明确设置- 最好也有办法隐藏密码)
  3. android:inputType="numberPassword":对应于TYPE_CLASS_NUMBER | TYPE_NUMBER_VARIATION_PASSWORDandroid:inputType="textPassword" 相同,但您只能输入数字。考虑到如果你使用它,密码不会那么强,所以我不建议在处理敏感数据时使用它,除非它与其他类型的用户身份验证一起使用。
  4. android:inputType="textWebPassword":对应于TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_PASSWORD,具有与android:inputType="textPassword" 相同的行为,但它旨在用于Web 表单,即在浏览器页面内(任何接受用户输入的Web 表单控件)。所以这不应在EditText 本机控件中使用。使用此方法的示例是 disable AutoSuggestion from Android in a WebView,通过包装 WebView 并更改 EditorInfo 输入类型以在 onCreateInputConnection 方法中添加标志 InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD

作为从链接中截取的最后一个示例:

public class NoSuggestionsWebView extends WebView {
    ...

    @Override
    public InputConnection onCreateInputConnection(EditorInfo outAttrs)
    {
        InputConnection ic = super.onCreateInputConnection(outAttrs);

        outAttrs.inputType &= ~EditorInfo.TYPE_MASK_VARIATION; /* clear VARIATION type to be able to set new value */
        outAttrs.inputType |= InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD; /* WEB_PASSWORD type will prevent form suggestions */

        return ic;
    }
}

我希望现在可以清楚区别,主要是 android:inputType="textPassword"android:inputType="textWebPassword" 之间的区别

【讨论】:

    【解决方案2】:
    android:inputType="textPassword"
    

    上面的属性将密码作为字符串。

    android:inputType="textVisiblePassword"
    

    上面的那个将使密码文本可见。

    android:inputType="numberPassword"
    

    而且这个只需要一个数字密码。

    【讨论】:

    • textWebPassword 呢?
    • 如果“textVisiblePassword”不隐藏文本,它的意义何在?是不是和默认一样
    • 系统会知道这是一个密码,即使它是可见的,也不应该保存在自动完成字典等中。
    【解决方案3】:

    来自the doc for android:inputType

    文本密码
    值:0x00000081
    作为密码的文本。对应
    TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD

    textVisiblePassword
    值:0x00000091
    应该是可见的密码文本。对应
    TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_VISIBLE_PASSWORD

    textWebPassword
    值:0x000000e1
    将用作 Web 表单上的密码的文本。对应
    TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_PASSWORD

    数字密码
    值:0x00000012
    数字密码字段。对应
    TYPE_CLASS_NUMBER | TYPE_NUMBER_VARIATION_PASSWORD

    【讨论】:

    • web form 在这里是什么意思?要提交到 Web 服务的表单?
    • 我的答案是从官方文档中复制的。如果你不明白这个问我,在投反对票之前……投反对票不是为了这个目的:P
    • 你从哪里得到这些常量...我需要整个映射谢谢!
    • textWebPassword 的官方文档没有解释 Web 表单上的密码与不同位置的密码有何不同。它也没有解释 Android 如何以不同于 textPassword 的方式处理这个问题。要正确回答这个问题,需要解决 Android 文档中的这一缺陷。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2013-06-30
    • 2016-04-30
    • 2017-09-12
    • 2014-03-31
    • 2015-02-05
    相关资源
    最近更新 更多