Overlap scrolling view with AppBarLayout

In fact, overlaying the scrolling view with the AppBarLayout is an included feature of the Android Design Support Library: you can use the app:behavior_overlapTop attribute on your NestedScrollView (or any View using ScrollingViewBehavior) to set the overlap amount: <android.support.v4.widget.NestedScrollView android:layout_width=”match_parent” android:layout_height=”match_parent” app:layout_behavior=”@string/appbar_scrolling_view_behavior” app:behavior_overlapTop=”64dp”> Note that app:behavior_overlapTop only works on views that have the app:layout_behavior=”@string/appbar_scrolling_view_behavior” as … Read more

What is CoordinatorLayout?

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 Coordinate This is what you get: I think these definitions … Read more

How can I be notified when a Snackbar has dismissed itself?

Google design library supports Snackbar callbacks in version 23. See Snackbar docs and Callback docs. You will then get notified when the Snackbar gets dismissed (and also when shown) and also the type of dismissal if this is useful for you: snackbar.addCallback(new Snackbar.Callback() { @Override public void onDismissed(Snackbar snackbar, int event) { //see Snackbar.Callback docs … Read more

Android Design Library – Floating Action Button Padding/Margin Issues

Update (Oct 2016): The correct solution now is to put app:useCompatPadding=”true” into your FloatingActionButton. This will make the padding consistent between different API versions. However, this still seems to make the default margins off by a little bit, so you may need to adjust those. But at least there’s no further need for API-specific styles. … Read more

Android design support library for API 28 (P) not working

You can either use the previous API packages version of artifacts or the new Androidx, never both. If you wanna use the previous version, replace your dependencies with dependencies { implementation fileTree(include: [‘*.jar’], dir: ‘libs’) implementation “org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version” implementation ‘com.android.support:appcompat-v7:28.0.0-alpha3’ implementation ‘com.android.support.constraint:constraint-layout:1.1.1’ testImplementation ‘junit:junit:4.12’ androidTestImplementation ‘com.android.support.test:runner:1.0.2’ androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2’ implementation ‘com.android.support:design:28.0.0-alpha3’ implementation ‘com.android.support:cardview-v7:28.0.0-alpha3’ } if you want … Read more

How to mimic Google Maps’ bottom-sheet 3 phases behavior?

Note: Read the edits at the bottom OK, I’ve found a way to do it, but I had to change the code of multiple classes, so that the bottom sheet would know of the state of the appBarLayout (expanded or not), and ignore scroll-up in case it’s not expanded: BottomSheetLayout.java Added fields: private AppBarLayout mAppBarLayout; … Read more

FloatingActionButton example with Support Library

So in your build.gradle file, add this: compile ‘com.android.support:design:27.1.1′ AndroidX Note: Google is introducing new AndroidX extension libraries to replace the older Support Libraries. To use AndroidX, first make sure you’ve updated your gradle.properties file, edited build.gradle to set compileSdkVersion to 28 (or higher), and use the following line instead of the previous compile one. … Read more

Android CollapsingToolbarLayout collapse Listener

I share the full implementation, based on @Frodio Beggins and @Nifhel code: public abstract class AppBarStateChangeListener implements AppBarLayout.OnOffsetChangedListener { public enum State { EXPANDED, COLLAPSED, IDLE } private State mCurrentState = State.IDLE; @Override public final void onOffsetChanged(AppBarLayout appBarLayout, int i) { if (i == 0) { if (mCurrentState != State.EXPANDED) { onStateChanged(appBarLayout, State.EXPANDED); } mCurrentState … Read more

How to change the new TabLayout indicator color and height

Having the problem that the new TabLayout uses the indicator color from the value colorAccent, I decided to dig into the android.support.design.widget.TabLayout implementation, finding that there are no public methods to customize this. However I found this style specification of the TabLayout: <style name=”Base.Widget.Design.TabLayout” parent=”android:Widget”> <item name=”tabMaxWidth”>@dimen/tab_max_width</item> <item name=”tabIndicatorColor”>?attr/colorAccent</item> <item name=”tabIndicatorHeight”>2dp</item> <item name=”tabPaddingStart”>12dp</item> <item name=”tabPaddingEnd”>12dp</item> … Read more

Change the font of tab text in android design support TabLayout

If you are using TabLayout and you want to change the font you have to add a new for loop to the previous solution like this: private void changeTabsFont() { ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0); int tabsCount = vg.getChildCount(); for (int j = 0; j < tabsCount; j++) { ViewGroup vgTab = (ViewGroup) vg.getChildAt(j); int … Read more