android:inputType =" textPassword"," textVisiblePassword"," textWebPassword"和" numberPassword"在android?

时间:2014-05-04 08:41:22

标签: android android-layout android-edittext

任何人都可以解释

之间的差异
   android:inputType="textPassword",
   android:inputType="textVisiblePassword",
   android:inputType="textWebPassword",
   android:inputType="numberPassword"
Android布局中的EditText ViewGroup

3 个答案:

答案 0 :(得分:8)

android:inputType="textPassword"

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

android:inputType="textVisiblePassword"

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

android:inputType="numberPassword"

这个只会输入一个数字密码。

答案 1 :(得分:8)

来自the doc for 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

答案 2 :(得分:4)

即使已经回答,我也会在密码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输入类型,以在InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD方法中添加标记onCreateInputConnection
  5. 作为从链接中获取的最后一个示例:

    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"

    之间