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"> + +