diff --git a/stripe/res/layout/card_input_widget.xml b/stripe/res/layout/card_input_widget.xml index 08c3fce9d90..d6ec59e6776 100644 --- a/stripe/res/layout/card_input_widget.xml +++ b/stripe/res/layout/card_input_widget.xml @@ -76,8 +76,7 @@ android:layout_height="wrap_content" android:background="@android:color/transparent" android:imeOptions="actionNext" - android:inputType="date" - android:maxLength="5" + android:digits="@string/stripe_expiration_date_allowlist" android:hint="@string/expiry_date_hint" style="@style/Stripe.CardInputWidget.EditText" /> diff --git a/stripe/res/layout/card_multiline_widget.xml b/stripe/res/layout/card_multiline_widget.xml index 437df78c69f..4fe5dc3fe34 100644 --- a/stripe/res/layout/card_multiline_widget.xml +++ b/stripe/res/layout/card_multiline_widget.xml @@ -49,8 +49,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:imeOptions="actionNext" - android:inputType="date" - android:maxLength="@integer/stripe_date_length" + android:digits="@string/stripe_expiration_date_allowlist" android:nextFocusDown="@+id/et_cvc" android:nextFocusForward="@+id/et_cvc" /> diff --git a/stripe/res/values/donottranslate.xml b/stripe/res/values/donottranslate.xml index 2ac15e205fc..1a943733391 100644 --- a/stripe/res/values/donottranslate.xml +++ b/stripe/res/values/donottranslate.xml @@ -5,6 +5,7 @@ CVV 123 1234 + 0123456789/ 12345 ยทยทยทยท%1$s diff --git a/stripe/src/main/java/com/stripe/android/view/ExpiryDateEditText.kt b/stripe/src/main/java/com/stripe/android/view/ExpiryDateEditText.kt index 6d9f9235afb..17ddcdd2b7b 100644 --- a/stripe/src/main/java/com/stripe/android/view/ExpiryDateEditText.kt +++ b/stripe/src/main/java/com/stripe/android/view/ExpiryDateEditText.kt @@ -3,6 +3,8 @@ package com.stripe.android.view import android.content.Context import android.os.Build import android.text.Editable +import android.text.InputFilter +import android.text.InputType import android.util.AttributeSet import android.view.View import android.widget.EditText @@ -20,6 +22,13 @@ class ExpiryDateEditText @JvmOverloads constructor( ) : StripeEditText(context, attrs, defStyleAttr) { init { + inputType = InputType.TYPE_CLASS_NUMBER + filters = listOf( + InputFilter.LengthFilter( + context.resources.getInteger(R.integer.stripe_date_length) + ) + ).toTypedArray() + setErrorMessage(resources.getString(R.string.invalid_expiry_year)) listenForTextChanges()