Skip to content

Commit 8dac51a

Browse files
Fix Student QA V5 - Part 2 - 7. finding (K5 homeroom dashboard big gap and schedule page bottom gap issue.)
1 parent 7a48f51 commit 8dac51a

File tree

2 files changed

+48
-3
lines changed

2 files changed

+48
-3
lines changed

apps/student/src/main/java/com/instructure/student/mobius/elementary/ElementaryDashboardFragment.kt

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import android.os.Bundle
2020
import android.view.LayoutInflater
2121
import android.view.View
2222
import android.view.ViewGroup
23+
import androidx.core.view.ViewCompat
24+
import androidx.core.view.WindowInsetsCompat
2325
import com.google.android.material.tabs.TabLayout
2426
import com.instructure.canvasapi2.models.CanvasContext
2527
import com.instructure.interactions.router.Route
@@ -33,7 +35,6 @@ import com.instructure.pandautils.features.elementary.resources.ResourcesFragmen
3335
import com.instructure.pandautils.features.elementary.schedule.pager.SchedulePagerFragment
3436
import com.instructure.pandautils.utils.Const
3537
import com.instructure.pandautils.utils.ParcelableArg
36-
import com.instructure.pandautils.utils.applyBottomSystemBarInsets
3738
import com.instructure.pandautils.utils.applyTopSystemBarInsets
3839
import com.instructure.pandautils.utils.isTablet
3940
import com.instructure.pandautils.utils.makeBundle
@@ -84,7 +85,24 @@ class ElementaryDashboardFragment : ParentFragment() {
8485
super.onViewCreated(view, savedInstanceState)
8586

8687
dashboardPager.adapter = ElementaryDashboardPagerAdapter(fragments, childFragmentManager)
87-
dashboardPager.applyBottomSystemBarInsets()
88+
89+
// Consume bottom insets so child fragments don't apply them
90+
// The Canvas bottom navigation bar handles bottom spacing at the activity level
91+
ViewCompat.setOnApplyWindowInsetsListener(dashboardPager) { view, insets ->
92+
val navigationBars = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
93+
WindowInsetsCompat.Builder(insets)
94+
.setInsets(
95+
WindowInsetsCompat.Type.navigationBars(),
96+
androidx.core.graphics.Insets.of(
97+
navigationBars.left,
98+
navigationBars.top,
99+
navigationBars.right,
100+
0 // Consume bottom insets
101+
)
102+
)
103+
.build()
104+
}
105+
88106
dashboardTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
89107
override fun onTabReselected(tab: TabLayout.Tab?) = Unit
90108

libs/pandautils/src/main/java/com/instructure/pandautils/features/elementary/schedule/pager/SchedulePagerFragment.kt

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,16 @@ import android.view.LayoutInflater
2121
import android.view.View
2222
import android.view.ViewGroup
2323
import androidx.constraintlayout.widget.ConstraintSet
24+
import androidx.core.view.ViewCompat
25+
import androidx.core.view.WindowInsetsCompat
26+
import androidx.core.view.updatePadding
2427
import androidx.fragment.app.Fragment
25-
import com.instructure.pandautils.base.BaseCanvasFragment
2628
import androidx.fragment.app.viewModels
2729
import androidx.lifecycle.LiveData
2830
import androidx.lifecycle.MutableLiveData
2931
import androidx.viewpager2.adapter.FragmentStateAdapter
3032
import androidx.viewpager2.widget.ViewPager2
33+
import com.instructure.pandautils.base.BaseCanvasFragment
3134
import com.instructure.pandautils.databinding.FragmentSchedulePagerBinding
3235
import com.instructure.pandautils.features.elementary.schedule.ScheduleFragment
3336
import com.instructure.pandautils.utils.isAccessibilityEnabled
@@ -57,6 +60,30 @@ class SchedulePagerFragment : BaseCanvasFragment() {
5760
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
5861
super.onViewCreated(view, savedInstanceState)
5962

63+
// Consume bottom insets for schedulePager so child fragments don't apply them
64+
// The controls section handles bottom spacing
65+
ViewCompat.setOnApplyWindowInsetsListener(binding.schedulePager) { view, insets ->
66+
val navigationBars = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
67+
WindowInsetsCompat.Builder(insets)
68+
.setInsets(
69+
WindowInsetsCompat.Type.navigationBars(),
70+
androidx.core.graphics.Insets.of(
71+
navigationBars.left,
72+
navigationBars.top,
73+
navigationBars.right,
74+
0 // Consume bottom insets
75+
)
76+
)
77+
.build()
78+
}
79+
80+
// Apply bottom system bar insets to controls (Previous/Next Week buttons)
81+
ViewCompat.setOnApplyWindowInsetsListener(binding.controls) { view, insets ->
82+
val navigationBars = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
83+
view.updatePadding(bottom = navigationBars.bottom)
84+
insets
85+
}
86+
6087
viewModel.data.observe(viewLifecycleOwner, { schedulePagerViewData ->
6188
schedulePagerViewData?.let {
6289
binding.schedulePager.adapter = object : FragmentStateAdapter(this@SchedulePagerFragment) {

0 commit comments

Comments
 (0)