@@ -1018,14 +1018,38 @@ class BrowserTabFragment :
1018
1018
// Move the trackersBlockedSlidingView in sync with the top omnibar.
1019
1019
binding.trackersBlockedSlidingView.translationY = - binding.trackersBlockedSlidingView.height * (1 - scrollFraction)
1020
1020
if (scrollFraction == 0.0f ) {
1021
- binding.trackersBlockedSlidingView.gone()
1021
+ binding.trackersBlockedSlidingView.post {
1022
+ binding.trackersBlockedSlidingView.gone()
1023
+ }
1024
+ offsetTopBySlidingView(binding.browserLayout, scrollFraction)
1022
1025
} else {
1023
1026
if (binding.trackersBurstAnimationView.isAnimating) {
1024
1027
binding.trackersBurstAnimationView.cancelAnimation()
1025
1028
}
1026
1029
experimentTrackersCountAnimationHelper.animate(binding.trackers, viewModel.siteLiveData)
1027
1030
binding.website.text = viewModel.url?.extractDomain()
1028
- binding.trackersBlockedSlidingView.show()
1031
+ binding.trackersBlockedSlidingView.post {
1032
+ binding.trackersBlockedSlidingView.x = 0f
1033
+ binding.trackersBlockedSlidingView.y = 0f
1034
+ binding.trackersBlockedSlidingView.show()
1035
+ }
1036
+ offsetTopBySlidingView(binding.browserLayout, scrollFraction)
1037
+ }
1038
+ }
1039
+
1040
+ private fun offsetTopBySlidingView (
1041
+ view : View ? ,
1042
+ scrollFraction : Float ,
1043
+ ) {
1044
+ (view?.layoutParams as ? CoordinatorLayout .LayoutParams )?.let { layoutParams ->
1045
+ val newTopMargin =
1046
+ binding.trackersBlockedSlidingView.measuredHeight - binding.trackersBlockedSlidingView.height * (1 - scrollFraction).toInt()
1047
+ if (layoutParams.topMargin != newTopMargin) {
1048
+ layoutParams.topMargin = newTopMargin
1049
+ view.postOnAnimation {
1050
+ view.requestLayout()
1051
+ }
1052
+ }
1029
1053
}
1030
1054
}
1031
1055
0 commit comments