How to Change the Color of a Floating Action Button in Android

How to Change the Color of a Floating Action Button in Android

6 June 2024 Stephan Petzl Leave a comment Tech-Help

Floating Action Buttons (FABs) are an integral part of Material Design, and they are widely used in Android applications for primary actions. Customizing the color of a FAB can enhance the user interface and align it with the app’s theme. Here, we will guide you through various methods to change the color of a FAB effectively.

Changing FAB Color in XML

The simplest and most straightforward way to change the color of a FAB is by using the app:backgroundTint attribute in your XML layout file:

<com.google.android.material.floatingactionbutton.FloatingActionButton
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_add"
    app:backgroundTint="@color/orange"
    app:borderWidth="0dp"
    app:elevation="6dp"
    app:fabSize="normal" />

This approach ensures that the FAB takes the specified color defined in your resources.

Changing FAB Color Programmatically

If you need to change the color of the FAB dynamically at runtime, you can use the setBackgroundTintList method:

FloatingActionButton fab = findViewById(R.id.profile_edit_fab);
fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#FFA500")));

This method allows you to set the color programmatically using a color value.

Adding Ripple Effect

To enhance the user experience, you might want to add a ripple effect to the FAB when it is pressed. This can be achieved using the setRippleColor method:

fab.setRippleColor(ColorStateList.valueOf(Color.parseColor("#FF4500")));

By setting this attribute, a ripple with the specified color will appear at the touch point and spread across the FAB surface.

Using ColorStateList for Complex Color States

For more complex color states, such as different colors for normal and pressed states, you can use ColorStateList:

ColorStateList colorStateList = new ColorStateList(
    new int[][]{
        new int[]{android.R.attr.state_pressed},
        new int[]{android.R.attr.state_enabled}
    },
    new int[]{
        Color.parseColor("#FF4500"),
        Color.parseColor("#FFA500")
    });
fab.setBackgroundTintList(colorStateList);

This approach allows you to define different colors for various states of the FAB.

Common Issues and Solutions

Sometimes, the border of the FAB might show a different color. To resolve this, set the border width to 0dp:

app:borderWidth="0dp"

This ensures that only the background color is visible, providing a cleaner look.

Conclusion

Customizing the color of a Floating Action Button can significantly enhance the visual appeal and user experience of your Android app. By using the methods described above, you can easily change the FAB color both in XML and programmatically, as well as add ripple effects and handle complex color states.

Enhance Your App with Repeato

While customizing your FAB and other UI elements, it’s essential to ensure that your app’s functionality remains intact. This is where Repeato can be a valuable tool. As a no-code test automation tool for iOS and Android, Repeato allows you to create, run, and maintain automated tests for your apps efficiently. By leveraging computer vision and AI, Repeato makes it easy to edit and run tests quickly, enabling developers to focus on creating a great product. Additionally, it allows non-technical colleagues or QAs to take over test automation, ensuring comprehensive testing without the need for extensive coding knowledge.

For more information on how Repeato can assist you in mobile app testing, visit our Getting Started page or explore our blog for additional resources and insights.

Like this article? there’s more where that came from!