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}. -->
+
+