Last Updated: 02 June 2025 | Change Log
AccessCheckoutEditText
To ensure you remain SAQ-A compliant, we have designed the AccessCheckoutEditText
component to not publish any methods or properties that expose the text entered by the end user.
You can customize your views. Here are the methods and properties supported by our component:
XML Properties
In addition to the XML supported by the View
class, here are the properties supported by our component:
Name | Type |
---|---|
android:textColor | Color |
android:hint | String |
android:textColorHint | Color |
android:imeOptions | Int |
android:cursorVisible | Boolean |
android:textSize | Float |
android:font | Typeface |
android:autofillHints | String |
Methods
In addition to the View
class, here are the methods supported by our component:
Methods |
---|
getHint():CharSequence |
setHint(value:CharSequence) |
isEnabled():Boolean |
setEnabled(value:Boolean) |
getCurrentTextColor():Int |
setTextColor(value:Int) |
getCurrentHintTextColor():Int |
setHintColor(value:Int) |
getImeOptions():Int |
setImeOptions(value:Int) |
getTextSize():Float |
setTextSize(value:Float) |
getTypeface():Typeface |
setTypeFace(value:Typeface) |
isCursorVisible():Boolean |
setCursorVisible(value:Boolean) |
setText(text:String) |
setAutofillHints(hints: String) |
getAutofillHints():Array<String> |
setOnFocusChangeListener(event: OnFocusChangeListener) |
getOnFocusChangeListener(): OnFocusChangeListener |
clear() |
There are methods from the View
class which are not supported, these are:
Methods not supported |
---|
getBackgroundTintList():ColorStateList |
setBackgroundTintMode(PorterDuff.Mode tintMode) |
setBackgroundTintBlendMode(BlendMode blendMode) |
Enabling card auto-fill
AccessCheckoutEditText
is compatible with android:autofillHints
. Providing autofillHints
enables the autofill service to recognize the type of view, making it possible to enter credit card details automatically in your application.
You can set autofill hints using the android:autofillHints
attribute. The following example sets a "creditCardNumber" hint on an AccessCheckoutEditText
:
<com.worldpay.access.checkout.ui.AccessCheckoutEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:autofillHints="creditCardNumber"/>
You should assign the appropriate autofill hint to each AccessCheckoutEditText
input field based on its purpose. Use:
creditCardNumber
for the card number fieldcreditCardExpirationDate
for the expiry datecreditCardSecurityCode
for the credit card security code (CVC/CVV)
You can also set hints programmatically using the setAutofillHints() method, as shown in the following example:
val creditCarNumber = findViewById<EditAccessCheckoutEditTextText>(R.id.credit_card_number)
creditCarNumber.setAutofillHints(View.AUTOFILL_HINT_CREDIT_CARD_NUMBER)
Handling onFocus events
AccessCheckoutEditText
has support for onFocus
events, allowing your application to update the UI dynamically when a user interacts with the AccessCheckoutEditText
You must use the setOnFocusChangeListener
to react to focus changes.
The example below changes the background of the AccessCheckoutEditText
when the field gains focus to the secondary color and changes it back to the primary color when the field loses focus.
val panText = view.findViewById(R.id.credit_card_number)
panText.setOnFocusChangeListener { view, hasFocus ->
val color = if (hasFocus) R.color.design_default_color_secondary else R.color.design_default_color_on_primary
view.setBackgroundColor(ContextCompat.getColor(requireContext(), color))
}
Use Espresso for UI Testing
AccessCheckoutEditText
acts as a wrapper around an EditText
. This is to ensure you can't access the EditText
instance and remain SAQ-A compliant.
Because of this, you must perform an action on the EditText
rather than on the AccessCheckoutEditText
instance.
You can access the EditText
instance in Espresso by using the code below, where the id corresponds to the id of the AccessCheckoutEditText
instance:
Espresso.onView(ViewMatchers.withParent(withId(R.id.your_identifier)))