diff --git a/src/main/java/ru/touchin/roboswag/components/views/TypefacedEditText.java b/src/main/java/ru/touchin/roboswag/components/views/TypefacedEditText.java index 86db412..33c8493 100644 --- a/src/main/java/ru/touchin/roboswag/components/views/TypefacedEditText.java +++ b/src/main/java/ru/touchin/roboswag/components/views/TypefacedEditText.java @@ -25,6 +25,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.AppCompatEditText; import android.text.Editable; +import android.text.InputType; import android.text.TextUtils; import android.text.TextWatcher; import android.text.method.SingleLineTransformationMethod; @@ -160,6 +161,12 @@ public class TypefacedEditText extends AppCompatEditText { "textSize required parameter. If it's dynamic then use '0sp'"); AttributesUtils.checkAttribute(typedArray, errors, AttributesUtils.getField(androidRes, "TextView_inputType"), true, "inputType required parameter"); + + final int inputType = typedArray.getInt(AttributesUtils.getField(androidRes, "TextView_inputType"), -1); + if (AttributesUtils.isNumberInputType(inputType)) { + errors.add("use inputType phone instead of number"); + } + AttributesUtils.checkAttribute(typedArray, errors, AttributesUtils.getField(androidRes, "TextView_imeOptions"), true, "imeOptions required parameter"); } @@ -299,6 +306,17 @@ public class TypefacedEditText extends AppCompatEditText { Lc.assertion(new IllegalStateException(AttributesUtils.viewError(this, "Do not specify ellipsize for EditText"))); } + @Override + public void setInputType(final int type) { + if (AttributesUtils.isNumberInputType(type)) { + Lc.assertion(new IllegalStateException(AttributesUtils.viewError(this, + "Do not specify number InputType for EditText, use phone instead"))); + super.setInputType(InputType.TYPE_CLASS_PHONE); + return; + } + super.setInputType(type); + } + /** * Sets typeface from 'assets/fonts' folder by name. * diff --git a/src/main/java/ru/touchin/roboswag/components/views/internal/AttributesUtils.java b/src/main/java/ru/touchin/roboswag/components/views/internal/AttributesUtils.java index a001fc8..e1e8bbe 100644 --- a/src/main/java/ru/touchin/roboswag/components/views/internal/AttributesUtils.java +++ b/src/main/java/ru/touchin/roboswag/components/views/internal/AttributesUtils.java @@ -23,6 +23,7 @@ import android.content.Context; import android.content.res.TypedArray; import android.support.annotation.NonNull; import android.support.annotation.StyleableRes; +import android.text.InputType; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; @@ -149,6 +150,16 @@ public final class AttributesUtils { return "Errors for view id=" + UiUtils.OfViews.getViewIdString(view) + ":\n" + errorText; } + /** + * Returns true if input type equals number input type. + * + * @param inputType Input type to check; + * @return true if input type equals number input type. + */ + public static boolean isNumberInputType(final int inputType) { + return inputType == InputType.TYPE_CLASS_NUMBER || inputType == InputType.TYPE_DATETIME_VARIATION_NORMAL; + } + private AttributesUtils() { }