Android FloatingActionBar Speed Dial / Sub Menu

I am using leinardi/FloatingActionButtonSpeedDial, or you could try yavski/fab-speed-dial as well.

Edit app / module build.gradle

dependencies {
    implementation "com.leinardi.android:speed-dial:3.1.1"
}

Code

// using menu layout fail to load white icon or use tint// speedDial.inflate(R.menu.home_speeddial)speedDial.addAllActionItems(    listOf(        SpeedDialActionItem.Builder(R.id.action_new_batch, R.drawable.ic_baseline_local_florist_24)            .setLabel("Batch")            .setFabImageTintColor(Color.WHITE)            .create(),        SpeedDialActionItem.Builder(R.id.action_new_article, R.drawable.ic_baseline_event_note_24)            .setLabel("Article")            .setFabImageTintColor(Color.WHITE)            .create(),        SpeedDialActionItem.Builder(R.id.action_new_purchase, R.drawable.ic_baseline_shopping_cart_24)            .setLabel("Purchase")            .setFabImageTintColor(Color.WHITE)            .create()    ))speedDial.setOnActionSelectedListener { actionItem ->    when (actionItem.id) {        R.id.action_new_batch -> {            Toast.makeText(requireContext(), "New Batch", Toast.LENGTH_LONG).show()            speedDial.close()            true        }        else -> false    }}

NOTE: Add icon via Android Studio -> File -> New -> Vector Asset

Layout

<?xml version="1.0" encoding="utf-8"?>

<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".view.HomeFragment">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/list"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.leinardi.android.speeddial.SpeedDialOverlayLayout
        android:id="@+id/overlay"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <com.leinardi.android.speeddial.SpeedDialView
        android:id="@+id/speedDial"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        app:sdMainFabClosedSrc="@drawable/ic_baseline_add_24"
        app:layout_behavior="@string/speeddial_scrolling_view_snackbar_behavior"
        app:sdOverlayLayout="@id/overlay" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>

NOTE: Use app:layout_behavior to auto hide during scroll down (must be child of CoordinatorLayout)

Resource ID

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item type="id" name="action_new_batch"/>
    <item type="id" name="action_new_article"/>
    <item type="id" name="action_new_purchase"/>
</resources>

❤️ Is this article helpful?

Buy me a coffee ☕ or support my work via PayPal to keep this space 🖖 and ad-free.

Do send some 💖 to @d_luaz or share this article.

✨ By Desmond Lua

A dream boy who enjoys making apps, travelling and making youtube videos. Follow me on @d_luaz

👶 Apps I built

Travelopy - discover travel places in Malaysia, Singapore, Taiwan, Japan.