diff --git a/example/build.gradle b/example/build.gradle
index d77849a43d7..2b72fa30cba 100644
--- a/example/build.gradle
+++ b/example/build.gradle
@@ -44,12 +44,13 @@ dependencies {
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation "androidx.lifecycle:lifecycle-viewmodel:2.1.0"
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
+ implementation 'com.google.android.material:material:1.1.0-rc01'
implementation 'com.google.android.gms:play-services-wallet:18.0.0'
/* Needed for RxAndroid */
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
- implementation 'io.reactivex.rxjava2:rxjava:2.2.16'
+ implementation 'io.reactivex.rxjava2:rxjava:2.2.17'
/* Needed for Rx Bindings on views */
implementation 'com.jakewharton.rxbinding2:rxbinding:2.2.0'
diff --git a/example/res/values/themes.xml b/example/res/values/themes.xml
index 4f001b53f70..6652dd42d58 100644
--- a/example/res/values/themes.xml
+++ b/example/res/values/themes.xml
@@ -1,6 +1,6 @@
-
-
diff --git a/example/src/main/java/com/stripe/example/activity/CreateCardPaymentMethodActivity.kt b/example/src/main/java/com/stripe/example/activity/CreateCardPaymentMethodActivity.kt
index 2dc1c2c95f0..9b576c7ed58 100644
--- a/example/src/main/java/com/stripe/example/activity/CreateCardPaymentMethodActivity.kt
+++ b/example/src/main/java/com/stripe/example/activity/CreateCardPaymentMethodActivity.kt
@@ -8,7 +8,6 @@ import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
-import com.google.android.material.snackbar.Snackbar
import com.stripe.android.PaymentConfiguration
import com.stripe.android.Stripe
import com.stripe.android.model.PaymentMethod
@@ -29,14 +28,14 @@ class CreateCardPaymentMethodActivity : AppCompatActivity() {
PaymentConfiguration.getInstance(this).publishableKey
)
}
- private lateinit var snackbarContainer: View
+ private val snackbarController: SnackbarController by lazy {
+ SnackbarController(findViewById(android.R.id.content))
+ }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_card_payment_methods)
- snackbarContainer = findViewById(android.R.id.content)
-
rv_payment_methods.setHasFixedSize(false)
rv_payment_methods.layoutManager = LinearLayoutManager(this)
rv_payment_methods.adapter = adapter
@@ -67,8 +66,7 @@ class CreateCardPaymentMethodActivity : AppCompatActivity() {
}
private fun showSnackbar(message: String) {
- Snackbar.make(snackbarContainer, message, Snackbar.LENGTH_LONG)
- .show()
+ snackbarController.show(message)
}
private fun onCreatePaymentMethodStart() {
diff --git a/example/src/main/java/com/stripe/example/activity/CreateCardSourceActivity.kt b/example/src/main/java/com/stripe/example/activity/CreateCardSourceActivity.kt
index 527d37c1994..85fe77457f1 100644
--- a/example/src/main/java/com/stripe/example/activity/CreateCardSourceActivity.kt
+++ b/example/src/main/java/com/stripe/example/activity/CreateCardSourceActivity.kt
@@ -8,7 +8,6 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import androidx.recyclerview.widget.LinearLayoutManager
-import com.google.android.material.snackbar.Snackbar
import com.stripe.android.ApiResultCallback
import com.stripe.android.PaymentConfiguration
import com.stripe.android.Stripe
@@ -38,6 +37,9 @@ class CreateCardSourceActivity : AppCompatActivity() {
private val keyboardController: KeyboardController by lazy {
KeyboardController(this)
}
+ private val snackbarController: SnackbarController by lazy {
+ SnackbarController(findViewById(android.R.id.content))
+ }
private var alertDialog: AlertDialog? = null
@@ -185,8 +187,7 @@ class CreateCardSourceActivity : AppCompatActivity() {
}
private fun showSnackbar(message: String) {
- Snackbar.make(findViewById(android.R.id.content), message, Snackbar.LENGTH_LONG)
- .show()
+ snackbarController.show(message)
}
private companion object {
diff --git a/example/src/main/java/com/stripe/example/activity/CreateCardTokenActivity.kt b/example/src/main/java/com/stripe/example/activity/CreateCardTokenActivity.kt
index b7d2a60fb89..360f89d4a7b 100644
--- a/example/src/main/java/com/stripe/example/activity/CreateCardTokenActivity.kt
+++ b/example/src/main/java/com/stripe/example/activity/CreateCardTokenActivity.kt
@@ -15,7 +15,6 @@ import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
-import com.google.android.material.snackbar.Snackbar
import com.stripe.android.ApiResultCallback
import com.stripe.android.PaymentConfiguration
import com.stripe.android.Stripe
@@ -26,6 +25,10 @@ import kotlinx.android.synthetic.main.card_token_activity.*
class CreateCardTokenActivity : AppCompatActivity() {
+ private val snackbarController: SnackbarController by lazy {
+ SnackbarController(findViewById(android.R.id.content))
+ }
+
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.card_token_activity)
@@ -53,12 +56,7 @@ class CreateCardTokenActivity : AppCompatActivity() {
adapter.addToken(it)
})
} else {
- Snackbar.make(
- findViewById(android.R.id.content),
- R.string.invalid_card_details,
- Snackbar.LENGTH_SHORT
- )
- .show()
+ snackbarController.show(getString(R.string.invalid_card_details))
}
}
diff --git a/example/src/main/java/com/stripe/example/activity/CustomerSessionActivity.kt b/example/src/main/java/com/stripe/example/activity/CustomerSessionActivity.kt
index cdf1142e474..1d326d8b0de 100644
--- a/example/src/main/java/com/stripe/example/activity/CustomerSessionActivity.kt
+++ b/example/src/main/java/com/stripe/example/activity/CustomerSessionActivity.kt
@@ -5,7 +5,6 @@ import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
-import com.google.android.material.snackbar.Snackbar
import com.stripe.android.CustomerSession
import com.stripe.android.StripeError
import com.stripe.android.model.Customer
@@ -21,6 +20,10 @@ import kotlinx.android.synthetic.main.activity_customer_session.*
*/
class CustomerSessionActivity : AppCompatActivity() {
+ private val snackbarController: SnackbarController by lazy {
+ SnackbarController(coordinator)
+ }
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_customer_session)
@@ -37,8 +40,6 @@ class CustomerSessionActivity : AppCompatActivity() {
btn_launch_payment_methods.isEnabled = false
btn_launch_payment_methods.setOnClickListener { launchWithCustomer() }
-
- onRetrieveError("Error!!")
}
private fun launchWithCustomer() {
@@ -69,8 +70,7 @@ class CustomerSessionActivity : AppCompatActivity() {
private fun onRetrieveError(errorMessage: String) {
btn_launch_payment_methods.isEnabled = false
progress_bar.visibility = View.INVISIBLE
- Snackbar.make(coordinator, errorMessage, Snackbar.LENGTH_LONG)
- .show()
+ snackbarController.show(errorMessage)
}
private class CustomerRetrievalListenerImpl constructor(
diff --git a/example/src/main/java/com/stripe/example/activity/PayWithGoogleActivity.kt b/example/src/main/java/com/stripe/example/activity/PayWithGoogleActivity.kt
index d578d08cca8..20e23ce57cb 100644
--- a/example/src/main/java/com/stripe/example/activity/PayWithGoogleActivity.kt
+++ b/example/src/main/java/com/stripe/example/activity/PayWithGoogleActivity.kt
@@ -15,7 +15,6 @@ import com.google.android.gms.wallet.PaymentDataRequest
import com.google.android.gms.wallet.PaymentsClient
import com.google.android.gms.wallet.Wallet
import com.google.android.gms.wallet.WalletConstants
-import com.google.android.material.snackbar.Snackbar
import com.stripe.android.ApiResultCallback
import com.stripe.android.GooglePayJsonFactory
import com.stripe.android.PaymentConfiguration
@@ -40,6 +39,9 @@ class PayWithGoogleActivity : AppCompatActivity() {
private val googlePayJsonFactory: GooglePayJsonFactory by lazy {
GooglePayJsonFactory(this)
}
+ private val snackbarController: SnackbarController by lazy {
+ SnackbarController(coordinator)
+ }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -166,8 +168,7 @@ class PayWithGoogleActivity : AppCompatActivity() {
}
private fun showSnackbar(message: String) {
- Snackbar.make(coordinator, message, Snackbar.LENGTH_SHORT)
- .show()
+ snackbarController.show(message)
}
private companion object {
diff --git a/example/src/main/java/com/stripe/example/activity/PaymentSessionActivity.kt b/example/src/main/java/com/stripe/example/activity/PaymentSessionActivity.kt
index acf453b35d3..b27c767059b 100644
--- a/example/src/main/java/com/stripe/example/activity/PaymentSessionActivity.kt
+++ b/example/src/main/java/com/stripe/example/activity/PaymentSessionActivity.kt
@@ -6,7 +6,6 @@ import android.view.View
import android.view.WindowManager
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
-import com.google.android.material.snackbar.Snackbar
import com.stripe.android.CustomerSession
import com.stripe.android.PaymentSession
import com.stripe.android.PaymentSessionConfig
@@ -36,6 +35,9 @@ class PaymentSessionActivity : AppCompatActivity() {
private val notSelectedText: String by lazy {
getString(R.string.not_selected)
}
+ private val snackbarController: SnackbarController by lazy {
+ SnackbarController(coordinator)
+ }
private var paymentSessionData: PaymentSessionData? = null
@@ -226,8 +228,7 @@ class PaymentSessionActivity : AppCompatActivity() {
}
private fun showError(errorMessage: String) {
- Snackbar.make(coordinator, errorMessage, Snackbar.LENGTH_LONG)
- .show()
+ snackbarController.show(errorMessage)
}
private class PaymentSessionListenerImpl internal constructor(
diff --git a/example/src/main/java/com/stripe/example/activity/SnackbarController.kt b/example/src/main/java/com/stripe/example/activity/SnackbarController.kt
new file mode 100644
index 00000000000..d2c85df9c16
--- /dev/null
+++ b/example/src/main/java/com/stripe/example/activity/SnackbarController.kt
@@ -0,0 +1,12 @@
+package com.stripe.example.activity
+
+import android.view.View
+import com.google.android.material.snackbar.BaseTransientBottomBar
+import com.google.android.material.snackbar.Snackbar
+
+internal class SnackbarController internal constructor(val view: View) {
+ fun show(message: String) {
+ Snackbar.make(view, message, BaseTransientBottomBar.LENGTH_SHORT)
+ .show()
+ }
+}
diff --git a/stripe/res/layout/card_input_widget.xml b/stripe/res/layout/card_input_widget.xml
index 40e11e6d1f0..a8f6dd6ea5b 100644
--- a/stripe/res/layout/card_input_widget.xml
+++ b/stripe/res/layout/card_input_widget.xml
@@ -36,7 +36,8 @@
android:nextFocusForward="@+id/tl_expiry_date"
android:nextFocusDown="@+id/tl_expiry_date"
android:contentDescription="@string/acc_label_card_number"
- app:hintEnabled="false">
+ app:hintEnabled="false"
+ style="@style/Stripe.CardInputWidget.TextInputLayout">
+ app:hintEnabled="false"
+ style="@style/Stripe.CardInputWidget.TextInputLayout">
+ app:hintEnabled="false"
+ style="@style/Stripe.CardInputWidget.TextInputLayout">
+ app:hintEnabled="false"
+ style="@style/Stripe.CardInputWidget.TextInputLayout">
+
+
+
+