Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Floating action button hidden behind navigation drawer

I am trying to ads a fab to my fragment but it is hidden behind the navigation bar. The issue is that the appear layout is interested he activities and the scroll behavior is set to the frame layout to which I attach the fragment. How do I add this behavior to the recycler view in the fragment without having to add the toolbar to the fragment. This is because I have lots of fragments and just one activity 

Navigation_drawer_layout

<?xml version="1.0" encoding="utf-8"?>

<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="close">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinatorLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true">

            <include
                android:id="@+id/toolbar"
                layout="@layout/toolbar" />
        </android.support.design.widget.AppBarLayout>


        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"

            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:theme="@style/NavigationDrawerStyle"
        app:itemIconTint="@color/PrimaryPurple"
        app:menu="@menu/activity_dasboard_drawer" />


</android.support.v4.widget.DrawerLayout>

fragment_layout

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/food_queue_recycle_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/title_white" />

        <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:id="@+id/card_view_no_items"
            android:layout_width="350dp"
            android:layout_height="200dp"
            android:layout_centerInParent="true"
            android:visibility="gone"
            card_view:cardCornerRadius="2dp"
            card_view:cardElevation="4dp">

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center">

                <ImageView
                    android:id="@+id/errorImageView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_alignParentTop="true"
                    android:layout_centerHorizontal="true"
                    android:contentDescription="@string/empty_favourite_list"
                    android:src="@drawable/food_icon_empty" />

                <TextView
                    android:id="@+id/errorTextView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/errorImageView"
                    android:layout_marginTop="@dimen/large_text_size"
                    android:gravity="center"
                    android:text="@string/empty_favourite_list"
                    android:textAllCaps="true"
                    android:textColor="@color/SecondaryBlack"
                    android:textSize="@dimen/medium_text_size"
                    android:textStyle="bold" />
            </RelativeLayout>
        </android.support.v7.widget.CardView>
    </RelativeLayout>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/action_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:src="@drawable/ic_mode_edit_48px"
        app:backgroundTint="@color/PrimaryPurple"
        app:layout_anchor="@id/food_queue_recycle_list"
        app:layout_anchorGravity="bottom|right|end"
        app:layout_behavior="helpers.FABCoordinatorBehavior" />
</android.support.design.widget.CoordinatorLayout>

enter image description here

like image 522
android_eng Avatar asked Sep 26 '22 11:09

android_eng


1 Answers

Daniel Nugent's right.you can do that like this:

Just put the FloatingActionButton on that mainlayout like this:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="close">

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/coordinatorLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />

        <android.support.design.widget.AppBarLayout
            android:id="@+id/appBarLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true">

            <include
                android:id="@+id/toolbar"
                layout="@layout/toolbar" />

        </android.support.design.widget.AppBarLayout>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/action_edit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_margin="@dimen/fab_margin"
            android:src="@drawable/ic_mode_edit_48px"
            app:backgroundTint="@color/PrimaryPurple"
            app:layout_anchor="@id/food_queue_recycle_list"
            app:layout_anchorGravity="bottom|right|end"
            app:layout_behavior="helpers.FABCoordinatorBehavior" />

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:theme="@style/NavigationDrawerStyle"
        app:itemIconTint="@color/PrimaryPurple"
        app:menu="@menu/activity_dasboard_drawer" />

</android.support.v4.widget.DrawerLayout>

And then use that RecyclerView inside that Fragment:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinatorLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <android.support.v7.widget.RecyclerView
        android:id="@+id/food_queue_recycle_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/title_white" />

    <!-- not sure about this, but, it shouldn't be here -->

    <!--<android.support.v7.widget.CardView
        android:id="@+id/card_view_no_items"
        android:layout_width="350dp"
        android:layout_height="200dp"
        android:layout_centerInParent="true"
        android:visibility="gone"
        card_view:cardCornerRadius="2dp"
        card_view:cardElevation="4dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center">

            <ImageView
                android:id="@+id/errorImageView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_centerHorizontal="true"
                android:contentDescription="@string/empty_favourite_list"
                android:src="@drawable/food_icon_empty" />

            <TextView
                android:id="@+id/errorTextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/errorImageView"
                android:layout_marginTop="@dimen/large_text_size"
                android:gravity="center"
                android:text="@string/empty_favourite_list"
                android:textAllCaps="true"
                android:textColor="@color/SecondaryBlack"
                android:textSize="@dimen/medium_text_size"
                android:textStyle="bold" />
        </RelativeLayout>
    </android.support.v7.widget.CardView>-->

</RelativeLayout>

i wasn't sure about that CardView because you set the RecyclerView to match_parent:

<android.support.v7.widget.RecyclerView
        android:id="@+id/food_queue_recycle_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/title_white" />

So, those card's shouldn't be there.(unless you need to show it as error cards) by setting setVisibility to GONE and after that, handle if there was an error, show it by: setVisibility == View.VISIBLE.

like image 140
ʍѳђઽ૯ท Avatar answered Oct 11 '22 05:10

ʍѳђઽ૯ท