Multiline-CollapsingToolbar library, as the name itself suggests, allows us to have more than one line in the CollapsingToolbarLayout. Using this library, we can deal with the multiline titles (with a customizable maximum number of lines) in the expanded state with a nice fade-away animation. In this article, we will be implementing this library in an Android App using Java language. A sample GIF is given below to get an idea about what we are going to do in this article.
Step by Step Implementation
Step 1: Create a New Project
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.
Note: Make sure you are using android support libraries while creating a new project, since multiline-collapsingtoolbar library does not support AndroidX.
Step 2: Add the library dependency
Navigate to the Gradle Scripts > build.gradle(Module:app), add the library in the dependencies section, and sync the project.
dependencies { // use the same version of Android support libraries as of collapsing toolbar implementation 'net.opacapp:multiline-collapsingtoolbar:27.1.1' }
Step 3: Working with the activity_main.xml file
Navigate to the app > res > layout > activity_main.xml and add the below code to that file. Below is the code for the activity_main.xml file. Comments are added inside the code to understand the code in detail.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < android.support.design.widget.CoordinatorLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:fitsSystemWindows = "true" tools:context = ".MainActivity" > < android.support.design.widget.AppBarLayout android:layout_width = "match_parent" android:layout_height = "192dp" android:background = "?attr/colorPrimary" android:fitsSystemWindows = "true" android:theme = "@style/AppTheme.AppBarOverlay" > <!-- Adding CollapsingToolbarLayout--> <!-- maxLines sets the maximum no of lines to be displayed in expanded form--> < net.opacapp.multilinecollapsingtoolbar.CollapsingToolbarLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:theme = "@style/AppTheme.AppBarOverlay" app:expandedTitleTextAppearance = "@style/TextAppearance.ExpandedTitle" app:layout_scrollFlags = "scroll|exitUntilCollapsed" app:lineSpacingMultiplier = "1.2" app:maxLines = "3" app:title = "GeeksForGeeks is an amazing website for DS and Algorithms. " > < android.support.v7.widget.Toolbar android:id = "@+id/toolbar" android:layout_width = "match_parent" android:layout_height = "?attr/actionBarSize" app:layout_collapseMode = "pin" app:popupTheme = "@style/AppTheme.PopupOverlay" /> </ net.opacapp.multilinecollapsingtoolbar.CollapsingToolbarLayout > </ android.support.design.widget.AppBarLayout > <!--Nested Scroll view contains the main_content--> < android.support.v4.widget.NestedScrollView android:layout_width = "match_parent" android:layout_height = "match_parent" app:layout_behavior = "@string/appbar_scrolling_view_behavior" > < TextView android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:layout_margin = "15dp" android:text = "@string/app_name" /> </ android.support.v4.widget.NestedScrollView > </ android.support.design.widget.CoordinatorLayout > |
Step 4: Working with the styles.xml file
Navigate to the app > res > values> styles.xml and add the below code to that file. Below is the code for the styles.xml file.
XML
< resources > <!-- Base application theme. --> < style name = "AppTheme" parent = "Theme.AppCompat.Light.DarkActionBar" > <!-- Customize your theme here. --> < item name = "colorPrimary" >@color/colorPrimary</ item > < item name = "colorPrimaryDark" >@color/colorPrimaryDark</ item > < item name = "colorAccent" >@color/colorAccent</ item > </ style > < style name = "AppTheme.NoActionBar" > < item name = "windowActionBar" >false</ item > < item name = "windowNoTitle" >true</ item > </ style > < style name = "AppTheme.AppBarOverlay" parent = "ThemeOverlay.AppCompat.Dark.ActionBar" /> < style name = "AppTheme.PopupOverlay" parent = "ThemeOverlay.AppCompat.Light" /> <!-- Sets the textSize of Title in Collapsing Toolbar--> < style name = "TextAppearance.ExpandedTitle" parent = "TextAppearance.AppCompat.Widget.ActionBar.Title" > < item name = "android:textSize" >26sp</ item > </ style > </ resources > |
Step 5: Working with the MainActivity.java file
Go to the MainActivity.java file and refer to the following code. Below is the code for the MainActivity.java file.
Java
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.Toolbar; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); // set the toolbar as the action bar for the activity Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); } } |
Step 6: Working with the AndroidManifest.xml file
Navigate to the app > manifests > AndroidManifest.xml and add the below code in the MainActivity Tag.
android:theme="@style/AppTheme.NoActionBar"
Output:
GitHub Repository: Multiline-CollapsingToolbar Library