mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-09-20 00:35:47 +01:00
Fix edge-to-edge issue on receipt screen.
This commit is contained in:
committed by
Alex Hart
parent
507045e85a
commit
c5271a6dae
+11
-3
@@ -55,6 +55,12 @@ abstract class DSLSettingsFragment(
|
||||
*/
|
||||
protected open val listAvoidsKeyboard: Boolean = false
|
||||
|
||||
/**
|
||||
* Cleared by layouts that anchor another view below the list, like a bottom action button. That view carries
|
||||
* the navigation bar inset instead, so the list must not pad for it as well.
|
||||
*/
|
||||
protected open val listClearsNavigationBar: Boolean = true
|
||||
|
||||
@CallSuper
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
toolbar = view.findViewById(R.id.toolbar)
|
||||
@@ -120,7 +126,7 @@ abstract class DSLSettingsFragment(
|
||||
}
|
||||
|
||||
recyclerView?.let { recycler ->
|
||||
val insetTypes = WindowInsetsCompat.Type.navigationBars() or
|
||||
val insetTypes = (if (listClearsNavigationBar) WindowInsetsCompat.Type.navigationBars() else 0) or
|
||||
(if (listScrollsBehindToolbar) WindowInsetsCompat.Type.statusBars() else 0) or
|
||||
(if (listAvoidsKeyboard) WindowInsetsCompat.Type.ime() else 0)
|
||||
|
||||
@@ -128,8 +134,10 @@ abstract class DSLSettingsFragment(
|
||||
recycler.updatePadding(top = recycler.paddingTop + resources.getDimensionPixelSize(R.dimen.signal_m3_toolbar_height))
|
||||
}
|
||||
|
||||
recycler.clipToPadding = false
|
||||
SystemWindowInsetsSetter.attach(recycler, viewLifecycleOwner, insetTypes)
|
||||
if (insetTypes != 0) {
|
||||
recycler.clipToPadding = false
|
||||
SystemWindowInsetsSetter.attach(recycler, viewLifecycleOwner, insetTypes)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
@@ -1,6 +1,7 @@
|
||||
package org.thoughtcrime.securesms.components.settings.app.subscription.receipts.detail
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.fragment.app.viewModels
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import org.thoughtcrime.securesms.R
|
||||
@@ -15,6 +16,7 @@ import org.thoughtcrime.securesms.components.settings.models.SplashImage
|
||||
import org.thoughtcrime.securesms.database.model.InAppPaymentReceiptRecord
|
||||
import org.thoughtcrime.securesms.payments.FiatMoneyUtil
|
||||
import org.thoughtcrime.securesms.util.DateUtils
|
||||
import org.thoughtcrime.securesms.util.SystemWindowInsetsSetter
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter
|
||||
import java.util.Locale
|
||||
import org.signal.core.ui.R as CoreUiR
|
||||
@@ -23,6 +25,8 @@ class DonationReceiptDetailFragment : DSLSettingsFragment(layoutId = R.layout.do
|
||||
|
||||
private lateinit var progressDialog: SignalProgressDialog
|
||||
|
||||
override val listClearsNavigationBar: Boolean = false
|
||||
|
||||
private val viewModel: DonationReceiptDetailViewModel by viewModels(
|
||||
factoryProducer = {
|
||||
DonationReceiptDetailViewModel.Factory(
|
||||
@@ -38,6 +42,8 @@ class DonationReceiptDetailFragment : DSLSettingsFragment(layoutId = R.layout.do
|
||||
val sharePngButton: MaterialButton = requireView().findViewById(R.id.share_png)
|
||||
sharePngButton.isEnabled = false
|
||||
|
||||
SystemWindowInsetsSetter.attach(sharePngButton, viewLifecycleOwner, WindowInsetsCompat.Type.navigationBars(), SystemWindowInsetsSetter.ApplyMode.MARGIN)
|
||||
|
||||
viewModel.state.observe(viewLifecycleOwner) { state ->
|
||||
if (state.inAppPaymentReceiptRecord != null) {
|
||||
val subscriptionName = InAppDonations.resolveLabel(requireContext(), state.inAppPaymentReceiptRecord)
|
||||
|
||||
+5
@@ -3,13 +3,16 @@ package org.thoughtcrime.securesms.components.settings.app.subscription.receipts
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.viewpager2.widget.ViewPager2
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.google.android.material.tabs.TabLayoutMediator
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.components.BoldSelectionTabItem
|
||||
import org.thoughtcrime.securesms.components.ControllableTabLayout
|
||||
import org.thoughtcrime.securesms.util.SystemWindowInsetsSetter
|
||||
|
||||
class DonationReceiptListFragment : Fragment(R.layout.donation_receipt_list_fragment) {
|
||||
|
||||
@@ -22,6 +25,8 @@ class DonationReceiptListFragment : Fragment(R.layout.donation_receipt_list_frag
|
||||
findNavController().popBackStack()
|
||||
}
|
||||
|
||||
SystemWindowInsetsSetter.attach(view.findViewById<AppBarLayout>(R.id.app_bar), viewLifecycleOwner, WindowInsetsCompat.Type.statusBars())
|
||||
|
||||
pager.adapter = DonationReceiptListPageAdapter(this)
|
||||
|
||||
BoldSelectionTabItem.registerListeners(tabs)
|
||||
|
||||
+4
@@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.components.settings.app.subscription.receipts
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.Group
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
@@ -13,6 +14,7 @@ import org.thoughtcrime.securesms.components.settings.DSLSettingsText
|
||||
import org.thoughtcrime.securesms.components.settings.TextPreference
|
||||
import org.thoughtcrime.securesms.database.model.InAppPaymentReceiptRecord
|
||||
import org.thoughtcrime.securesms.util.StickyHeaderDecoration
|
||||
import org.thoughtcrime.securesms.util.SystemWindowInsetsSetter
|
||||
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil
|
||||
import org.thoughtcrime.securesms.util.navigation.safeNavigate
|
||||
import org.thoughtcrime.securesms.util.visible
|
||||
@@ -44,6 +46,8 @@ class DonationReceiptListPageFragment : Fragment(R.layout.donation_receipt_list_
|
||||
view.findViewById<RecyclerView>(R.id.recycler).apply {
|
||||
this.adapter = adapter
|
||||
addItemDecoration(StickyHeaderDecoration(adapter, false, true, 0))
|
||||
clipToPadding = false
|
||||
SystemWindowInsetsSetter.attach(this, viewLifecycleOwner, WindowInsetsCompat.Type.navigationBars())
|
||||
}
|
||||
|
||||
emptyStateGroup = view.findViewById(R.id.empty_state)
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/app_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/signal_background_primary">
|
||||
|
||||
Reference in New Issue
Block a user