Bottom Sheet перекрывается другими элементами
Открытый BottomSheetBehavior перекрывается RecyclerView и BottomNavigation (1-я картинка). При этом, если layout с BottomSheet переместить после FrameLayout,<include layout="@layout/layout_bottom_sheet_main" /> то только панель навигации перекрывает (2-я картинка). Как решить проблему?
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".MainActivity">
<include layout="@layout/layout_bottom_sheet_main" />
<androidx.appcompat.widget.Toolbar
android:id="@+id/ToolBar_Main"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@android:color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@color/colorPrimary"
app:itemIconTint="@android:color/white"
app:itemTextColor="@android:color/white"
app:menu="@menu/bottom_navigation_menu"/>
<FrameLayout
android:id="@+id/frame_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="?attr/actionBarSize"
android:layout_marginTop="?attr/actionBarSize"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Ответы (1 шт):
Автор решения: Виталий Сорокин
→ Ссылка
Решил это путем переставления layout="@layout/layout_bottom_sheet_main" /> после FrameLayout. А так же в коде MainActivity добавил анимацию для BottomNavigation. Теперь при появлении BottomSheet панель навигации уходит вниз в зависимости от положении BottomSheet
bottomSheetBehavior.setBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback(){
override fun onSlide(bottomSheet: View, slideOffset: Float) {
bottom_navigation.animate().y((coordinatorlayout.height-bottom_navigation.height+bottom_navigation.height*slideOffset).toFloat()).setDuration(0).start()
}
override fun onStateChanged(bottomSheet: View, newState: Int) {
}
})

