스크롤 뷰 내부의 viewpager가 있고, 해당 viewpager 는 Fragment가 들어있다. Fragment 마다 각각의 layout_height 값이 달라 다른 화면으로 화면을 넘겼다가 다시 돌아올 때 이전의 framgent 값의 height이 적용되어 짤리는 현상이 나타남
파란색 박스가 viewpager 화면이고, 전체는 ScrollView로 이루어져있다.
<ScrollView
android:fillViewport="true"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
....
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/view_pager"
android:paddingBottom="36dp"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</LinearLayout>
</ScrollView>
최하단까지 내렸을 때는 이렇게 8개의 버튼이 보여야 한다
하지만...
이렇게 가장 아래 버튼을 누르고 다음 페이지로 넘어갔다가 다시 돌아오면
뷰페이저를 스크롤 했지만 선택한 버튼이 보이지 않는 상황이 발생했다
(참고로 이전 페이지의 height이 해당 페이지의 height 보다 작다)
custom Viewpager를 만들어라 라는 해결방법도 찾을 수 있었는데 그것보다 간단하게 해결할 수 있다
각 내부의 Fragment의 onResume 에 binding.root.requestLayout()
를 추가해주자!
그러면 화면이 다시 시작될때마다 layout을 다시 그려줄 것이다
override fun onResume() {
super.onResume()
binding.root.requestLayout()
}
이 방법으로 생각보다 간단하게 해결했다