diff --git a/api/current.xml b/api/current.xml index 54cdbd7fef458..2431b1dfcd35f 100644 --- a/api/current.xml +++ b/api/current.xml @@ -179475,6 +179475,28 @@ visibility="public" > + + + + This is called by the framework for input method implementations; * you should not generally need to call it yourself. @@ -288,11 +290,16 @@ public class EditorInfo implements InputType, Parcelable { switch (inputType&(TYPE_MASK_CLASS|TYPE_MASK_VARIATION)) { case TYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS: inputType = TYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_EMAIL_ADDRESS - | (inputType&(~TYPE_MASK_FLAGS)); + | (inputType&TYPE_MASK_FLAGS); break; case TYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_WEB_PASSWORD: inputType = TYPE_CLASS_TEXT|TYPE_TEXT_VARIATION_PASSWORD - | (inputType&(~TYPE_MASK_FLAGS)); + | (inputType&TYPE_MASK_FLAGS); + break; + case TYPE_CLASS_NUMBER|TYPE_NUMBER_VARIATION_NORMAL: + case TYPE_CLASS_NUMBER|TYPE_NUMBER_VARIATION_PASSWORD: + inputType = TYPE_CLASS_NUMBER + | (inputType&TYPE_MASK_FLAGS); break; } } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index aa2e68f45045d..a3bfe8b8b0d85 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -783,6 +783,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener == (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD); final boolean webPasswordInputType = variation == (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD); + final boolean numberPasswordInputType = variation + == (EditorInfo.TYPE_CLASS_NUMBER | EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD); if (inputMethod != null) { Class c; @@ -900,6 +902,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mInputType = (mInputType & ~(EditorInfo.TYPE_MASK_VARIATION)) | EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD; } + } else if ((mInputType & EditorInfo.TYPE_MASK_CLASS) == EditorInfo.TYPE_CLASS_NUMBER) { + if (numberPasswordInputType) { + mInputType = (mInputType & ~(EditorInfo.TYPE_MASK_VARIATION)) + | EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD; + } } if (selectallonfocus) { @@ -946,7 +953,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } setRawTextSize(textSize); - if (password || passwordInputType || webPasswordInputType) { + if (password || passwordInputType || webPasswordInputType || numberPasswordInputType) { setTransformationMethod(PasswordTransformationMethod.getInstance()); typefaceIndex = MONOSPACE; } else if ((mInputType & (EditorInfo.TYPE_MASK_CLASS | EditorInfo.TYPE_MASK_VARIATION)) @@ -3096,7 +3103,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return variation == (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD) || variation - == (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD); + == (EditorInfo.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD) + || variation + == (EditorInfo.TYPE_CLASS_NUMBER | EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD); } private boolean isVisiblePasswordInputType(int inputType) { @@ -7637,9 +7646,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener int variation = mInputType & InputType.TYPE_MASK_VARIATION; // Text selection is not permitted in password fields - if (variation == InputType.TYPE_TEXT_VARIATION_PASSWORD || - variation == InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD || - variation == InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD) { + if (isPasswordInputType(mInputType) || isVisiblePasswordInputType(mInputType)) { return -1; } diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 36830ce72f55d..12ff0474496db 100755 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -850,7 +850,8 @@ {@link android.text.InputType#TYPE_TEXT_VARIATION_WEB_PASSWORD}. --> + {@link android.text.InputType#TYPE_CLASS_NUMBER} | + {@link android.text.InputType#TYPE_NUMBER_VARIATION_NORMAL}. --> + +