web-dev-qa-db-fra.com

Impossible de faire défiler AppBarLayout et de réduire la barre d'outils avec NestedScrollView en douceur

Je travaille sur une application Android dans laquelle j'utilise CoordinatorLayout, AppBarLayout et CollapsingToolbarLayout pour utiliser la fonctionnalité de réduction de la barre d'outils.

J'utilise NestedScrollView dans la mise en page pour développer et réduire AppBarLayout dans la même mise en page. Lorsque j'essaie de faire défiler vers le haut à partir du centre de l'écran, cela ne fonctionne pas, mais lorsque j'essaie de faire défiler l'écran du coin droit de l'écran, il défile en douceur.

Ci-dessous mentionné est mon fichier xml

layout.xml

<Android.support.v4.widget.NestedScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:fillViewport="true"
    Android:fitsSystemWindows="true"
    Android:paddingBottom="2dp"
    Android:paddingLeft="5dp"
    Android:paddingRight="5dp"
    Android:paddingTop="5dp"
    Android:layout_gravity="fill_vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:background="@color/fragment_back_color"
            Android:orientation="vertical">


            <LinearLayout
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:orientation="horizontal"
                Android:padding="5dp">

                <ImageView
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_gravity="center"
                    Android:background="@drawable/new_recharge" />

                <com.spiceladdoo.views.RobotTextviewRegular
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_gravity="center"
                    Android:layout_marginLeft="10dp"
                    Android:text="NEW PAYMENT"
                    Android:textColor="@color/offer_name_text_color" />

            </LinearLayout>


            <RelativeLayout

                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:layout_marginLeft="5dp"
                Android:layout_marginRight="5dp"
                Android:background="@color/white"
                Android:paddingBottom="20dp"
                Android:paddingLeft="10dp"
                Android:paddingRight="10dp"
                Android:paddingTop="20dp">

                <HorizontalScrollView
                    Android:id="@+id/hsv"
                    Android:layout_width="fill_parent"
                    Android:layout_height="wrap_content"
                    Android:layout_alignParentTop="true"
                    Android:fillViewport="true"
                    Android:measureAllChildren="false"
                    Android:scrollbars="none">

                    <LinearLayout
                        Android:layout_width="wrap_content"
                        Android:layout_height="wrap_content"
                        Android:layout_centerInParent="true"
                        Android:orientation="horizontal">

                        <LinearLayout
                            Android:id="@+id/wallet_layout"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:gravity="center"
                            Android:orientation="vertical">

                            <ImageView
                                Android:id="@+id/wallet_recharge"
                                Android:layout_width="wrap_content"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:background="@drawable/wallet_recherge" />

                            <com.spiceladdoo.views.RobotTextviewRegular
                                Android:layout_width="65dp"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:layout_marginTop="5dp"
                                Android:gravity="center"
                                Android:text="WALLET"
                                Android:textColor="@color/offer_name_text_color"
                                Android:textSize="12sp" />
                            >

                        </LinearLayout>

                        <View
                            Android:layout_width="5dp"
                            Android:layout_height="20dp"

                            Android:background="@color/white" />

                        <LinearLayout
                            Android:id="@+id/prepaid_layout"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:gravity="center"
                            Android:orientation="vertical">

                            <ImageView
                                Android:id="@+id/prepaid_recharge"
                                Android:layout_width="wrap_content"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:background="@drawable/prepaid_recherge" />

                            <com.spiceladdoo.views.RobotTextviewRegular
                                Android:layout_width="65dp"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:layout_marginTop="5dp"
                                Android:gravity="center"
                                Android:text="PREPAID"
                                Android:textColor="@color/offer_name_text_color"
                                Android:textSize="12sp" />
                            >

                        </LinearLayout>

                        <View
                            Android:layout_width="5dp"
                            Android:layout_height="20dp"

                            Android:background="@color/white" />

                        <LinearLayout
                            Android:id="@+id/postpaid_layout"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:gravity="center"
                            Android:orientation="vertical">

                            <ImageView
                                Android:id="@+id/postpaid_recharge"
                                Android:layout_width="wrap_content"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:background="@drawable/postpaid_recherge" />

                            <com.spiceladdoo.views.RobotTextviewRegular
                                Android:layout_width="65dp"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:layout_marginTop="5dp"
                                Android:gravity="center"
                                Android:text="POSTPAID"
                                Android:textColor="@color/offer_name_text_color"
                                Android:textSize="12sp" />
                            >

                        </LinearLayout>

                        <View
                            Android:layout_width="5dp"
                            Android:layout_height="20dp"
                            Android:background="@color/white" />

                        <LinearLayout
                            Android:id="@+id/dth_layout"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:gravity="center"
                            Android:orientation="vertical">

                            <ImageView
                                Android:id="@+id/dth_recharge"
                                Android:layout_width="wrap_content"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:background="@drawable/dth_recherge" />

                            <com.spiceladdoo.views.RobotTextviewRegular
                                Android:layout_width="65dp"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:layout_marginTop="5dp"
                                Android:gravity="center"
                                Android:text="DTH"
                                Android:textColor="@color/offer_name_text_color"
                                Android:textSize="12sp" />
                            >

                        </LinearLayout>

                        <View
                            Android:layout_width="5dp"
                            Android:layout_height="20dp"
                            Android:background="@color/white" />

                        <LinearLayout
                            Android:id="@+id/landline_layout"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:gravity="center"
                            Android:orientation="vertical">

                            <ImageView
                                Android:id="@+id/landline_recharge"
                                Android:layout_width="wrap_content"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:background="@drawable/landline_recherge" />

                            <com.spiceladdoo.views.RobotTextviewRegular
                                Android:layout_width="65dp"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:layout_marginTop="5dp"
                                Android:gravity="center"
                                Android:text="LANDLINE"
                                Android:textColor="@color/offer_name_text_color"
                                Android:textSize="12sp" />
                            >

                        </LinearLayout>

                        <View
                            Android:layout_width="5dp"
                            Android:layout_height="20dp"
                            Android:background="@color/white" />

                        <LinearLayout
                            Android:id="@+id/datacard_layout"
                            Android:layout_width="wrap_content"
                            Android:layout_height="wrap_content"
                            Android:gravity="center"
                            Android:orientation="vertical">

                            <ImageView
                                Android:id="@+id/datacard_recharge"
                                Android:layout_width="wrap_content"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:background="@drawable/datacard_recherge" />

                            <com.spiceladdoo.views.RobotTextviewRegular
                                Android:layout_width="65dp"
                                Android:layout_height="wrap_content"
                                Android:layout_gravity="center"
                                Android:layout_marginTop="5dp"
                                Android:gravity="center"
                                Android:text="DATACARD"
                                Android:textColor="@color/offer_name_text_color"
                                Android:textSize="12sp" />
                            >

                        </LinearLayout>
                    </LinearLayout>
                </HorizontalScrollView>
            </RelativeLayout>


            <LinearLayout
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:orientation="horizontal"

                Android:paddingBottom="10dp"
                Android:paddingLeft="5dp"
                Android:paddingRight="5dp"
                Android:paddingTop="10dp">

                <ImageView
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_gravity="center"
                    Android:background="@drawable/recent" />

                <com.spiceladdoo.views.RobotTextviewRegular
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_gravity="center"
                    Android:layout_marginLeft="10dp"
                    Android:text="RECENT"
                    Android:textColor="@color/offer_name_text_color" />

            </LinearLayout>

            <ListView
                Android:id="@+id/recent_recharge_list"
                Android:layout_width="match_parent"
                Android:layout_height="match_parent"
                Android:layout_marginLeft="5dp"
                Android:layout_marginRight="5dp">

            </ListView>


        </LinearLayout>

        <FrameLayout xmlns:tools="http://schemas.Android.com/tools"
            Android:id="@+id/recharge_container"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:visibility="visible"
            tools:ignore="MergeRootFrame">

        </FrameLayout>
    </RelativeLayout>
</Android.support.v4.widget.NestedScrollView>

Le résultat souhaité est que lorsque j'essaie de faire défiler vers le haut depuis le centre de l'écran, cela devrait fonctionner comme un smmoth lorsque je défile vers le haut depuis le coin droit du mobile.

Veuillez regarder la vidéo mentionnée ci-dessous pour examiner le problème plus clairement

https://www.dropbox.com/s/gscfc8vfc7kkpxp/device-2015-12-30-160119.mp4?dl=

23
Kushminder Garg

Je crois que je l'ai cloué:

enter image description here

Vous pouvez trouver le code source ici - n'hésitez pas à essayer;

J'ai pris comme exemple google\designlibdemo .

Voici à quoi ressemble mon Activity:

<?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"
    Android:id="@+id/drawer_layout"
    Android:layout_height="match_parent"
    Android:layout_width="match_parent"
    Android:fitsSystemWindows="true">

    <include layout="@layout/include_list_viewpager"/>

    <Android.support.design.widget.NavigationView
        Android:id="@+id/nav_view"
        Android:layout_height="match_parent"
        Android:layout_width="wrap_content"
        Android:layout_gravity="start"
        Android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header"
        app:menu="@menu/drawer_view"/>

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

Il héberge ViewPager: include_list_viewpager.xml:

<?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"
    Android:id="@+id/main_content"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">
    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/appbar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <Android.support.design.widget.CollapsingToolbarLayout
            Android:id="@+id/collapsing_toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            app:layout_scrollFlags="scroll|enterAlways|snap"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginStart="48dp"
            app:expandedTitleMarginEnd="64dp"
            Android:fitsSystemWindows="true">
            <ImageView
                Android:id="@+id/image"
                Android:src="@drawable/header_image"
                Android:layout_width="match_parent"
                Android:layout_height="200dp"
                Android:scaleType="centerCrop"
                Android:fitsSystemWindows="true"
                app:layout_collapseMode="parallax"/>
            <View
                Android:background="#AA50AA00"
                Android:layout_width="match_parent"
                Android:layout_height="200dp"
                app:layout_collapseMode="parallax"/>

            <Android.support.v7.widget.Toolbar
                Android:id="@+id/toolbar"
                Android:layout_width="match_parent"
                Android:title=""
                Android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin" />

        </Android.support.design.widget.CollapsingToolbarLayout>
        <Android.support.design.widget.TabLayout
            Android:id="@+id/tabs"
            Android:background="#50AA00"
            app:tabMode="scrollable"
            app:tabIndicatorColor="#FFF"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content" />
    </Android.support.design.widget.AppBarLayout>

    <Android.support.v4.view.ViewPager
        Android:id="@+id/viewpager"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</Android.support.design.widget.CoordinatorLayout>

CollapsingToolbarLayout hôtes Toolbar (app:layout_collapseMode="pin") et au-dessus ImageView (app:layout_collapseMode="parallax").

L'hébergé dans le fragment ViewPager a cette disposition:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.NestedScrollView
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:fillViewport="true"
    Android:fitsSystemWindows="true"
    Android:layout_gravity="fill_vertical"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">

    <LinearLayout
        Android:orientation="vertical"
        Android:background="#DDD"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">
        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:orientation="horizontal"
            Android:padding="16dp">
            <ImageView
                Android:src="@drawable/mobile"
                Android:layout_marginTop="2dp"
                Android:layout_width="16dp"
                Android:layout_height="16dp" />
            <TextView
                Android:text="@string/prepaid_recharge"
                Android:layout_marginStart="16dp"
                Android:layout_gravity="center_vertical"
                Android:textColor="#000"
                Android:fontFamily="sans-serif-medium"
                Android:textSize="14sp"
                Android:textAllCaps="true"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content" />
        </LinearLayout>
        ........
        <ListView
            Android:id="@+id/recent_recharge_list"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"/>
    </LinearLayout>
</Android.support.v4.widget.NestedScrollView>

Il a donc ce comportement app:layout_behavior="@string/appbar_scrolling_view_behavior" et remplissage ViewPort (Android:fillViewport="true")

Et en fait - c'est tout ce dont vous avez besoin. Fragment classe est très standard:

public class RechargeFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.recharge_fragment, container, false);
    }
}

Activity est également resté très standard.

Encore une fois, vous pouvez trouver mon exemple de code ici .

NB! J'ai trouvé que cela fonctionne assez mal (pas du tout lisse) sur l'émulateur.

J'espère que ça aide.

31
Konstantin Loginov

essayez Android:clickable="true" en vue enfant de NestedScrollView Comme ci-dessous:

    <Android.support.v4.widget.NestedScrollView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
        <LinearLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:orientation="vertical"
            Android:clickable="true">
        </LinearLayout>
   </Android.support.v4.widget.NestedScrollView>
5
Yugal Modi

On dirait un doublon de this . Bien qu'il pointe vers un thread "résolu", l'autre est davantage lié à RecyclerView.

J'ai écrit mon comportement sur la base de solutions faites par Manolo Garcia et Kirill Boyarshinov à partir du fil de RecyclerView. Dans mon cas, onNestedFling() n'a pas été appelé lors de la création du geste de lancer, donc j'ai piraté onNestedPreScroll(). J'ai travaillé dans ViewPager avec NestedScroll aujourd'hui, je n'ai pas testé la solution ci-dessous dans différents scénarios (bien qu'elle soit basée sur un code similaire que j'ai écrit pour RecyclerView il y a un an).

Premier comportement mis à jour (ajoutez-le en xml en tant que app:layout_behavior="your.package.FlingBehavior"> Pour Android.support.design.widget.AppBarLayout):

public final class FlingBehavior extends AppBarLayout.Behavior {

    private static final String TAG = FlingBehavior.class.getName();
    private static final int TOP_CHILD_FLING_THRESHOLD = 1;
    private static final float OPTIMAL_FLING_VELOCITY = 3500;
    private static final float MIN_FLING_VELOCITY = 20;

    boolean shouldFling = false;
    float flingVelocityY = 0;

    public FlingBehavior() {
    }

    public FlingBehavior(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target,
                                  int velocityX, int velocityY, int[] consumed) {

        super.onNestedPreScroll(coordinatorLayout, child, target, velocityX, velocityY, consumed);

        if (velocityY > MIN_FLING_VELOCITY) {
            shouldFling = true;
            flingVelocityY = velocityY;
        } else {
            shouldFling = false;
        }
    }

    @Override
    public void onStopNestedScroll(CoordinatorLayout coordinatorLayout, AppBarLayout abl, View target) {
        super.onStopNestedScroll(coordinatorLayout, abl, target);
        if (shouldFling) {
            Log.d(TAG, "onNestedPreScroll: running nested fling, velocityY is " + flingVelocityY);
            onNestedFling(coordinatorLayout, abl, target, 0, flingVelocityY, true);
        }
    }

    @Override
    public boolean onNestedFling(CoordinatorLayout coordinatorLayout, AppBarLayout child, View target,
                                 float velocityX, float velocityY, boolean consumed) {

        if (target instanceof RecyclerView && velocityY < 0) {
            Log.d(TAG, "onNestedFling: target is recyclerView");
            final RecyclerView recyclerView = (RecyclerView) target;
            final View firstChild = recyclerView.getChildAt(0);
            final int childAdapterPosition = recyclerView.getChildAdapterPosition(firstChild);
            consumed = childAdapterPosition > TOP_CHILD_FLING_THRESHOLD;
        }

        // prevent fling flickering when going up
        if (target instanceof NestedScrollView && velocityY > 0) {
            consumed = true;
        }

        if (Math.abs(velocityY) < OPTIMAL_FLING_VELOCITY) {
            velocityY = OPTIMAL_FLING_VELOCITY * (velocityY < 0 ? -1 : 1);
        }
        Log.d(TAG, "onNestedFling: velocityY - " + velocityY + ", consumed - " + consumed);

        return super.onNestedFling(coordinatorLayout, child, target, velocityX, velocityY, consumed);
    }
}

Maintenant, il devrait défiler en douceur, mais le contenu de NestedScrollView (et RecyclerView) peut défiler avant que AppBarLayout ne soit réduit, ce qui peut sembler plus étrange. Pour le résoudre suivez cette réponse . Apportez de petites modifications pour utiliser la méthode fullScroll(ScrollView.FOCUS_UP) au lieu de scrollTo(0, 0) sinon vous pouvez remarquer de petits scintillements lors des défilements rapides, ici:

AppBarLayout appBarLayout = findViewById(...);
appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
            @Override
            public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
                shouldScroll = Math.abs(verticalOffset) == appBarLayout.getTotalScrollRange();
            }
        });
NestedScrollView nestedScrollView = findViewById(...);
nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
            @Override
            public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                if (!shouldScroll)
                    nestedScrollView.fullScroll(ScrollView.FOCUS_UP);
            }
        });

Après cela, je l'ai appelé une fin, mais vous voudrez peut-être continuer pour le faire défiler encore plus facilement comme dans Google Play, il y a (je pense non résolu) un fil à ce sujet ici .

3
Darek Deoniziak

J'ai eu à peu près le même genre de problème lorsque je travaillais avec CoordinatorLayout ayant AppbarLayout, CollapsingToolbarLayout et NestedScrollView comme vues enfants.

Le code suivant est une pièce de travail directement à partir de mon espace de travail de projet.

<?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"
    Android:id="@+id/main_content"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <Android.support.design.widget.AppBarLayout
        Android:id="@+id/appBar"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
        <Android.support.design.widget.CollapsingToolbarLayout
            Android:id="@+id/collapsing_toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">
            <ImageView
                Android:id="@+id/cover_pic"
                Android:layout_width="match_parent"
                Android:layout_height="256dp"
                Android:scaleType="centerCrop"
                app:layout_collapseMode="parallax"
                Android:src="@drawable/cookin"/>
            <Android.support.v7.widget.Toolbar
                Android:id="@+id/mToolbar"
                Android:layout_width="match_parent"
                Android:layout_height="?attr/actionBarSize"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
                app:layout_collapseMode="pin"/>

        </Android.support.design.widget.CollapsingToolbarLayout>


        <Android.support.design.widget.TabLayout
            Android:id="@+id/tabLayout"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:layout_gravity="bottom"
            Android:background="?attr/colorPrimary"
            app:tabMode="scrollable"/>

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


    <Android.support.v4.widget.NestedScrollView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:fillViewport="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <Android.support.v4.view.ViewPager
            Android:id="@+id/tab_viewpager"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    </Android.support.v4.widget.NestedScrollView>

    <RelativeLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">

        <LinearLayout
            Android:layout_alignParentBottom="true"
            Android:layout_width="fill_parent"
            Android:layout_height="wrap_content"
            Android:orientation="vertical">

            <Android.support.design.widget.FloatingActionButton
                Android:id="@+id/fab_phone"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="bottom|end"
                Android:layout_marginRight="@dimen/fab_margin"
                Android:visibility="invisible"
                app:backgroundTint="@color/colorFAB2"
                app:elevation="6dp"
                Android:layout_margin="5dp"
                app:pressedTranslationZ="12dp"
                Android:src="@drawable/ic_phone_white_24dp" />

            <Android.support.design.widget.FloatingActionButton
                Android:id="@+id/fab_book"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="bottom|end"
                Android:layout_margin="5dp"
                Android:layout_marginRight="@dimen/fab_margin"
                Android:visibility="invisible"
                app:elevation="6dp"
                app:backgroundTint="@color/colorFAB1"
                app:pressedTranslationZ="12dp"
                Android:src="@drawable/ic_receipt_white_24dp" />
            <Android.support.design.widget.FloatingActionButton
                Android:id="@+id/fab_add"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_gravity="bottom|end"
                app:elevation="6dp"
                app:backgroundTint="@color/colorAccent"
                app:pressedTranslationZ="12dp"
                Android:layout_margin="@dimen/fab_margin"
                Android:src="@drawable/ic_add_white_24dp" />

        </LinearLayout>

    </RelativeLayout>


</Android.support.design.widget.CoordinatorLayout>
3
ishwor kafley