Fix bottom bar in CoordinatorLayout

后端 未结 8 649
独厮守ぢ
独厮守ぢ 2020-12-23 11:04

I have a CoordinatorLayout which contains AppBarLayout and a FrameLayout which contains fragments.

One of this fragment contai

相关标签:
8条回答
  • 2020-12-23 12:02

    Try this layout :

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/container">
    
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/bottom_navigation"
            android:layout_alignParentTop="true">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
            <android.support.v7.widget.CardView
                xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view"
                android:layout_width="match_parent"
                android:layout_margin="10dp"
                android:layout_height="110dp"
                android:padding="15dp"
                card_view:cardElevation="2dp"
                card_view:cardCornerRadius="4dp">
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:text="Test" />
    
            </android.support.v7.widget.CardView>
    
    
            <android.support.v7.widget.CardView
                xmlns:card_view="http://schemas.android.com/apk/res-auto"
                android:id="@+id/card_view1"
                android:layout_width="match_parent"
                android:layout_margin="10dp"
                android:layout_height="110dp"
                android:padding="15dp"
                card_view:cardElevation="2dp"
                card_view:cardCornerRadius="4dp">
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:text="Test" />
    
            </android.support.v7.widget.CardView>
    
                <android.support.v7.widget.CardView
                    xmlns:card_view="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/card_view3"
                    android:layout_width="match_parent"
                    android:layout_margin="10dp"
                    android:layout_height="110dp"
                    android:padding="15dp"
                    card_view:cardElevation="2dp"
                    card_view:cardCornerRadius="4dp">
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:text="Test" />
    
                </android.support.v7.widget.CardView>
    
                <android.support.v7.widget.CardView
                    xmlns:card_view="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/card_view4"
                    android:layout_width="match_parent"
                    android:layout_margin="10dp"
                    android:layout_height="110dp"
                    android:padding="15dp"
                    card_view:cardElevation="2dp"
                    card_view:cardCornerRadius="4dp">
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:text="Test" />
    
                </android.support.v7.widget.CardView>
    
                <android.support.v7.widget.CardView
                    xmlns:card_view="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/card_view5"
                    android:layout_width="match_parent"
                    android:layout_margin="10dp"
                    android:layout_height="110dp"
                    android:padding="15dp"
                    card_view:cardElevation="2dp"
                    card_view:cardCornerRadius="4dp">
    
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:text="Test" />
    
                </android.support.v7.widget.CardView>
            </LinearLayout>
        </ScrollView>
    
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="bottom"
            android:gravity="bottom">
    
            <android.support.design.widget.BottomNavigationView
                android:layout_width="match_parent"
                android:layout_height="56dp"
                android:layout_weight="1"
                android:foregroundGravity="bottom"
                android:background="@color/green"
                app:itemIconTint="@color/white"
                app:itemTextColor="@color/white"
                android:id="@+id/bottomnav"
                app:menu="@menu/main">
    
    
            </android.support.design.widget.BottomNavigationView>
    
        </RelativeLayout>
    
    
    
    </android.support.design.widget.CoordinatorLayout>
    
    0 讨论(0)
  • 2020-12-23 12:02

    This behavior basically removes scroll flag SCROLL from AppBarLayout, when scrolling content in dependent view (RecyclerView, NestedScrollView) is less than view height, ie. when scrolling is not needed. It also overrides offsetting scrolling view, which is normally done by AppBarLayout.ScrollingViewBehavior. Works well when adding footer, ie. button, to scrolling view or in ViewPager, where content length may be different in each page.

    https://gist.github.com/MaciejKaras/02bff315f00b87d80467a470424f22c3

    Answered already in https://stackoverflow.com/a/37293634

    0 讨论(0)
提交回复
热议问题