diff --git a/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt b/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt index cef921c1d6..fefb785d4c 100644 --- a/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt +++ b/app/src/main/java/com/tangem/tap/NavBarInsetsFragmentLifecycleCallback.kt @@ -11,6 +11,7 @@ import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentManager.FragmentLifecycleCallbacks class NavBarInsetsFragmentLifecycleCallback : FragmentLifecycleCallbacks() { + override fun onFragmentViewCreated(fm: FragmentManager, f: Fragment, v: View, savedInstanceState: Bundle?) { if (v is ComposeView) return diff --git a/app/src/main/java/com/tangem/tap/common/snackBar/MaxAmountSnackbar.kt b/app/src/main/java/com/tangem/tap/common/snackBar/MaxAmountSnackbar.kt index b540a9d7c2..939fc17c61 100644 --- a/app/src/main/java/com/tangem/tap/common/snackBar/MaxAmountSnackbar.kt +++ b/app/src/main/java/com/tangem/tap/common/snackBar/MaxAmountSnackbar.kt @@ -8,9 +8,13 @@ import android.view.ViewGroup import android.widget.FrameLayout import androidx.constraintlayout.widget.ConstraintLayout import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.updateLayoutParams import com.google.android.material.snackbar.BaseTransientBottomBar import com.google.android.material.snackbar.ContentViewCallback import com.google.android.material.snackbar.Snackbar +import com.tangem.sdk.extensions.dpToPx import com.tangem.wallet.R /** @@ -27,15 +31,29 @@ class MaxAmountSnackbar( val parent = view.findSuitableParent() ?: throw IllegalArgumentException( "No suitable parent found from the given view. Please provide a valid view.", ) - val inflater = LayoutInflater.from(view.context) + val inflater = LayoutInflater.from(parent.context) val customView = inflater.inflate(R.layout.view_snackbar_max_amount, parent, false) as MaxAmountSnackbarView customView.setOnClickListener { onClick() } return MaxAmountSnackbar(parent, customView).apply { + updateBottomMargin() duration = Snackbar.LENGTH_INDEFINITE } } + private fun MaxAmountSnackbar.updateBottomMargin() { + ViewCompat.setOnApplyWindowInsetsListener(this.view) { _, insets -> + val imeInsets = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom + val bottomInsets = insets.getInsets(WindowInsetsCompat.Type.systemBars()).bottom + + this.view.updateLayoutParams { + bottomMargin = imeInsets - bottomInsets + context.dpToPx(dp = 8f).toInt() + } + + insets + } + } + private fun View?.findSuitableParent(): ViewGroup? { var view = this var fallback: ViewGroup? = null