Show CollapsingToolbarLayout title only when collapsed Show CollapsingToolbarLayout title only when collapsed android android

Show CollapsingToolbarLayout title only when collapsed


You can add OnOffsetChangedListener to AppBarLayout to determine when CollapsingToolbarLayout is collapsed or expanded and set it's title.

Java

final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsingToolbarLayout);AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appBarLayout);appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {    boolean isShow = true;    int scrollRange = -1;    @Override    public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {        if (scrollRange == -1) {            scrollRange = appBarLayout.getTotalScrollRange();        }        if (scrollRange + verticalOffset == 0) {            collapsingToolbarLayout.setTitle("Title");            isShow = true;        } else if(isShow) {            collapsingToolbarLayout.setTitle(" ");//careful there should a space between double quote otherwise it wont work             isShow = false;        }    }});

Kotlin

var isShow = truevar scrollRange = -1appBarLayout.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { barLayout, verticalOffset ->    if (scrollRange == -1){        scrollRange = barLayout?.totalScrollRange!!    }    if (scrollRange + verticalOffset == 0){        collapsingToolbarLayout.title = "Title Collapse"        isShow = true    } else if (isShow){        collapsingToolbarLayout.title = " " //careful there should a space between double quote otherwise it wont work        isShow = false    }})


I tried dlohani's solution, but didn't like it because of the fading out.With this solution, you remove the fading completely.

The trick is to create a new style with textSize equal to 0.1sp or 0sp (this one crashes on SDK < 19) and textColor transparent:

For SDK < 19

<style name="CollapsingToolbarLayoutExpandedTextStyle" parent="AppTheme">    <item name="android:textColor">@android:color/transparent</item>    <item name="android:textSize">0.1sp</item></style>

For SDK >= 19

<style name="CollapsingToolbarLayoutExpandedTextStyle" parent="AppTheme">    <item name="android:textColor">@android:color/transparent</item>    <item name="android:textSize">0sp</item></style>

Then apply it to the CollapsingToolbarLayout in your layout:

    <android.support.design.widget.CollapsingToolbarLayout        android:id="@+id/collapsing_toolbar"        android:layout_width="match_parent"        android:layout_height="match_parent"        app:expandedTitleTextAppearance="@style/CollapsingToolbarLayoutExpandedTextStyle"        app:layout_scrollFlags="scroll|exitUntilCollapsed">


I was able to get the desired effect by adding following property to the xml layout:

app:expandedTitleTextAppearance="@android:color/transparent"

so my CollapsingToolbarLayout looks like this

<android.support.design.widget.CollapsingToolbarLayout        android:id="@+id/collapsingToolbarLayout"        android:layout_width="match_parent"        android:layout_height="match_parent"        app:expandedTitleTextAppearance="@android:color/transparent"        app:layout_scrollFlags="scroll|exitUntilCollapsed">