Blazerstrom
Blazerstrom

Reputation: 33

How to make FAB with icon and text

I'm working on customizing a floating action button (FAB) in my Android application. I'd like to modify it so that it can accommodate both an icon and text, similar to the design shown in this image:

the design

I've been searching for guidance on how to achieve this, but I haven't found a solution yet. Could someone please provide some advice or code examples on how to implement this feature while adhering to Android development best practices?

I've already tried ExtendedFloatingActionButton, but i don't know how to set the ExtendedFloatingActionButton into circle without removing the icon

<com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Test"
    app:icon="@drawable/ic_back"
    app:iconGravity="textTop"
    android:background="@drawable/circle_background"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" /> 

this is the result of above code

enter image description here

Upvotes: 2

Views: 486

Answers (2)

Spiker
Spiker

Reputation: 575

As FloatingActionButton(FAB) cannot have text and icon both we need to customize the UI with out FAB.

Please find the below code for your expected UI , also make sure that you dont hide the Dummy Fab as it will help you in creation of curves in the bottom bar

<?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=".MainActivity">

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottomAppBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:fabCradleMargin="10dp"
        app:fabCradleRoundedCornerRadius="10dp"
        app:fabCradleVerticalOffset="10dp">

        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/bottomNavigationView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginEnd="16dp"
            android:background="@android:color/transparent"
            app:menu="@menu/bottom_nav_menu" />

    </com.google.android.material.bottomappbar.BottomAppBar>

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab_dummy"
        android:visibility="visible"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/app_name"
        android:src="@drawable/selected_home"
        app:layout_anchor="@id/bottomAppBar" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/bottomAppBar"
        app:layout_anchorGravity="center_horizontal"
        android:elevation="20dp">
        <LinearLayout
            android:layout_width="56dp"
            android:layout_height="56dp"
            android:id="@+id/fab"
            android:orientation="vertical"
            android:background="@drawable/solid_circle"
            android:src="@drawable/selected_home"
            android:layout_marginBottom="20dp">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:background="@drawable/selected_home"
                android:layout_margin="5dp">
            </ImageView>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tv_fab_text"
                android:text="Fab"
                android:textColor="#000"
                android:layout_gravity="center_horizontal">
            </TextView>
        </LinearLayout>
    </LinearLayout>


</androidx.coordinatorlayout.widget.CoordinatorLayout>

solid_circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape android:shape="oval" xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#1E90FF"></solid>
</shape>

enter image description here

Upvotes: 1

Somanath Kambar
Somanath Kambar

Reputation: 26

to make it circular use a background shape

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
    <solid android:color="@android:color/white" />
</shape>

and add this
android:background="@drawable/dialog_rounded_background"

Upvotes: 0

Related Questions