Just had a look at the demo app of new Android support design library. It's provided by Chris Banes on github. Throught the app, CoordinatorLayout
is used Heavily. Also, many of the support design library classes such as FloatingActionButton
, SnackBar
, AppBarLayout
etc. behaves differently when used inside CoordinatorLayout
.
Can someone please shed some lights on what is CoordinatorLayout
and how it is different from other ViewGroup
s in android, or at least provide correct path towards learning CoordinatorLayout
.
An additional point to note. Since OP specifically asked
And I guess it is because of this.
FAB Button, SnackBar works on the concept of FrameLayout, and since CoordinatorLayout itself has functionality of FrameLayout, it might make other views to behave differently!.
Here it is you are looking for.
from docs
the Design library introduces
CoordinatorLayout
, a layout which provides an additional level of control over touch events between child views, something which many of the components in the Design library take advantage of.https://android-developers.googleblog.com/2015/05/android-design-support-library.html
in this link you will see the demo videos of all above mentioned views.
hope this helps :)
To give a quick snap-shot of what's useful in the Android Documentation :
Use CoordinatorLayout to simply control the relational behavior of your views ,
For instance if you want your ToolBar to collapse or hide. Google made it really easy by introducing AppBarLayout & CollapsingToolbarLayout, which both work best under a CoordinatorLayout.
The other most-used situation is when you want a FloatingActionButton to stick to the bottom of your CollapsingToolbar and move around with it, putting them under a coordinatorLayout and use
app:layout_anchor="@id/YourAppBarId"
for the glue(!) andapp:layout_anchorGravity="bottom|end"
as position will be enough for you to see the magic work!By using this layout as a context , the child views will have better collaboration and behave in an intelligent way because they will be aware of each other through the CoordinatorLayout context , this means your FloatingAction Buttons will no longer get overlapped by a snackBar etc.
these were just a quick summary of most useful parts , so if you want to save more time in animating your app it will be worth it to have little deeper dive in the subject.
see the Google Scrolling view activity template
CoordinatorLayout is essentially the frame layout with lot of capabilities which is obvious from the name, it automates the coordination among its children and helps build beautiful views. Its implementation can be seen in Google Play Store App.How the toolbar collapses and changes colors.
The best thing about CoordinatorLayoutis the behavior we give to its direct or indirect descendants. You must have seen while scrolling all the UI gets into motion. Its highly likely the behavior is working its magic.
What is a CoordinatorLayout? Don't let the fancy name fool you, it is nothing more than a FrameLayout on steroids
To best understand what a
CoordinatorLayout
is/does, you must first of all understand/bear in mind what it means to Coordinate.If you Google the word
This is what you get:
I think these definitions helps to describe what a CoordinatorLayout does on its own and how the views within it behave.
A CoordinatorLayout (a ViewGroup) brings the different elements (child Views) of a (̶a̶ ̶c̶o̶m̶p̶l̶e̶x̶ ̶a̶c̶t̶i̶v̶i̶t̶y̶ ̶o̶r̶ ̶a̶n̶ ̶o̶r̶g̶a̶n̶i̶z̶a̶t̶i̶o̶n̶)̶ layout into a harmonious or efficient relationship:
With the help of a CoordinatorLayout, child views work together harmoniously to implement awesome behaviours such as
Views inside a CoordinatorLayout negotiate with others in order to work together effectively by specifying these Behaviors
A CoordinatorLayout is a super cool feature of Material Design that helps to create attractive and harmonized layouts.
All you have to do is wrap your child views inside the CoordinatorLayout.
and content_scrolling:
What this gives us is a layout that can be scrolled to collapse the Toolbar and hide the FloatingActionButton
Open:
Closed: