mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 09:20:19 +01:00
Fix export flow on small screens.
This commit is contained in:
@@ -7,6 +7,7 @@ import androidx.navigation.fragment.findNavController
|
||||
import org.signal.smsexporter.DefaultSmsHelper
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.databinding.ExportYourSmsMessagesFragmentBinding
|
||||
import org.thoughtcrime.securesms.util.Material3OnScrollHelper
|
||||
import org.thoughtcrime.securesms.util.navigation.safeNavigate
|
||||
|
||||
/**
|
||||
@@ -28,5 +29,7 @@ class ExportYourSmsMessagesFragment : Fragment(R.layout.export_your_sms_messages
|
||||
findNavController().safeNavigate(ExportYourSmsMessagesFragmentDirections.actionExportYourSmsMessagesFragmentToSetSignalAsDefaultSmsAppFragment())
|
||||
}
|
||||
}
|
||||
|
||||
Material3OnScrollHelper(requireActivity(), binding.toolbar).attach(binding.scrollView)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import android.view.View
|
||||
import androidx.annotation.ColorInt
|
||||
import androidx.annotation.ColorRes
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.widget.NestedScrollView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.animation.ArgbEvaluatorCompat
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
@@ -47,6 +48,14 @@ open class Material3OnScrollHelper(
|
||||
private var animator: ValueAnimator? = null
|
||||
private var active: Boolean? = null
|
||||
|
||||
fun attach(nestedScrollView: NestedScrollView) {
|
||||
nestedScrollView.setOnScrollChangeListener(
|
||||
OnScrollListener().apply {
|
||||
onScrollChange(nestedScrollView, 0, 0, 0, 0)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
fun attach(recyclerView: RecyclerView) {
|
||||
recyclerView.addOnScrollListener(
|
||||
OnScrollListener().apply {
|
||||
@@ -57,7 +66,7 @@ open class Material3OnScrollHelper(
|
||||
|
||||
fun attach(appBarLayout: AppBarLayout) {
|
||||
appBarLayout.addOnOffsetChangedListener(
|
||||
OnOffsetChangedListener().apply {
|
||||
OnScrollListener().apply {
|
||||
onOffsetChanged(appBarLayout, 0)
|
||||
}
|
||||
)
|
||||
@@ -119,15 +128,17 @@ open class Material3OnScrollHelper(
|
||||
viewStubs.filter { it.resolved() }.forEach { it.get().setBackgroundColor(color) }
|
||||
}
|
||||
|
||||
private inner class OnScrollListener : RecyclerView.OnScrollListener() {
|
||||
private inner class OnScrollListener : RecyclerView.OnScrollListener(), AppBarLayout.OnOffsetChangedListener, NestedScrollView.OnScrollChangeListener {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
updateActiveState(recyclerView.canScrollVertically(-1))
|
||||
}
|
||||
}
|
||||
|
||||
private inner class OnOffsetChangedListener : AppBarLayout.OnOffsetChangedListener {
|
||||
override fun onOffsetChanged(appBarLayout: AppBarLayout, verticalOffset: Int) {
|
||||
updateActiveState(verticalOffset != 0)
|
||||
}
|
||||
|
||||
override fun onScrollChange(v: NestedScrollView, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int) {
|
||||
updateActiveState(v.canScrollVertically(-1))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user