android中的android:inputType ="textPassword","textVisiblePassword","textWebPassword"和"numberPassword"之间的区别?

kab*_*blu 24 android android-layout android-edittext

任何人都可以解释之间的差异

   android:inputType="textPassword",
   android:inputType="textVisiblePassword",
   android:inputType="textWebPassword",
   android:inputType="numberPassword"
Run Code Online (Sandbox Code Playgroud)

Android版面中的EditText ViewGroup?

Md *_*lam 8

android:inputType="textPassword"
Run Code Online (Sandbox Code Playgroud)

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

android:inputType="textVisiblePassword"
Run Code Online (Sandbox Code Playgroud)

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

android:inputType="numberPassword"
Run Code Online (Sandbox Code Playgroud)

而这个只会使用数字密码.

  • 怎么样`textWebPassword`? (13认同)
  • 如果“textVisiblePassword”不隐藏文本,它有什么意义?是不是和默认一样 (3认同)
  • 系统会知道它是密码,即使它是可见的,也不应该保存在自动完成字典等中. (2认同)

S.T*_*ane 8

来自以下文件android:inputType:

textPassword
值: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.

numberPassword
值:0x00000012
数字密码字段.对应于
TYPE_CLASS_NUMBER | TYPE_NUMBER_VARIATION_PASSWORD.

  • `textWebPassword`的官方文档没有解释Web表单上的密码与不同位置的密码有何不同.它也没有解释Android如何处理这种方式而不是`textPassword`.要正确回答这个问题,需要在Android文档中解决这个缺陷. (4认同)
  • "网络形式"在这里意味着什么?要提交给Web服务的表单? (3认同)

fma*_*oni 6

即使已经回答了问题,我也将为密码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_PASSWORD相同,android:inputType="textPassword"但您只能输入数字。请注意,如果您使用它,密码的强度就不会那么强,因此除非涉及其他类型的用户身份验证,否则我不建议您在处理敏感数据时使用它。
  4. android:inputType="textWebPassword":与对应,TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_WEB_PASSWORD并具有相同的行为,android:inputType="textPassword"但应在Web表单中使用,即在浏览器页面内使用(从用户那里获取输入的任何Web表单控件)。因此,不得在本EditText机控件中使用它。使用此方法的一个示例是,通过包装和更改输入类型以在方法内部添加标志,从WebView中Android禁用自动建议WebViewEditorInfoInputType.TYPE_TEXT_VARIATION_WEB_PASSWORDonCreateInputConnection

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望现在很清楚,主要是android:inputType="textPassword"android:inputType="textWebPassword"