'Change color of Floating Action Button from Appcompat 22.2.0 programmatically

I would like to know how to change the Floating Action Button color from the Support library 22.2.0 ? I've tried

button.setBackgroundColor(color);

but clearly, this changes the drawable of the button and it turns to a square.

Now I wonder how to change the color but just the color, without touching the shape?

Thanks in advance



Solution 1:[1]

Maybe late but could help.

 fab.setBackgroundTintList(ColorStateList.valueOf(Color
                    .parseColor("#33691E")));

and parse the actual color code from a list of colors You can find here

Solution 2:[2]

Create a ColorStateList and set it as the background tint:

button.setBackgroundTintList(new ColorStateList(new int[][]{new int[]{0}}, new int[]{color}));

Solution 3:[3]

To do this backwards compatible:

DrawableCompat.setTintList(DrawableCompat.wrap(fab.getDrawable()), tintColor); // <- icon
DrawableCompat.setTintList(DrawableCompat.wrap(fab.getBackground()), backgroundTintColor); // <- background

Solution 4:[4]

Create a color resource in colors.xml (R.color.purple in this case) and use it like so:

floatingActionButton.setBackgroundTintList(getResources().getColorStateList(R.color.purple));

Solution 5:[5]

you have to use

  • in XML with attribute app:backgroundTint
  • in code with .setBackgroundTintList read this answer

Android changing Floating Action Button color

Solution 6:[6]

Method 1: Change floating action bar(fab) color in xml:

To change floating action bar(fab) color just follow this step

just add "app:backgroundTint="#colorcode" " in xml of floating action bar(fab) .. For example

app:backgroundTint="#8393ca"

at the place of #8393ca add any color code you want

Example as usaage..

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|end"
    android:layout_margin="@dimen/fab_margin"
    app:backgroundTint="#8393ca"
    android:src="@drawable/send" />

Method 2: Change floating action bar color programmatically

just add this line on your code

Firstly create a color red in your values=>colors then add this code in your activity on create

fab.setBackgroundTintList(getResources().getColorStateList(R.color.red));

                                or

fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor("#33691E")));

credits : http://androidrace.com/2016/12/12/how-to-change-fabfloating-action-bar-color-android/

Solution 7:[7]

Check the accepted answer here: Android changing Floating Action Button color

If you wish to change the color

  • in XML with attribute app:backgroundTint
  • in code with .setBackgroundTintList

Solution 8:[8]

Try this code. It will add a tint to the background resource.

button.setBackgroundTintList(getResources().getColorStateList(R.color.yourColor));

Solution 9:[9]

the attribute name is backgroundTint

so I thinks there's a function named

button.setBackgroundTint(color)

Solution 10:[10]

if you are using Floating action button library from https://github.com/Clans/FloatingActionButton then use this

fab.setColorNormal(getResources().getColor(R.color.fab_color1));

Solution 11:[11]

The XML background:tint color will always override whatever color you gave programmatically. So to give color programmatically, remove android:backgroundTint="#96989A" line from the XML file and use:

button.setBackgroundTintList(getResources().getColorStateList(R.color.yourColor));

Solution 12:[12]

Sometimes you got your color in color file and you want to use that one.

WHAT YOU CAN DO IS THIS CODE BELOW

fab.setBackgroundTintList(ColorStateList.valueOf(Color.parseColor(getString(R.color.youcolor))));

As you know to change it programmatically, you need to use setBackgroundTintList(), then pass the ColorStateList.valueOf() which is required and this one take a certein int and parse it...

Note: if you just put the int color right away it could give you problems to get the color you want sometimes and for that reason i don't use it and don't recommend it to use it like that

Then put within ColorStateList.valueOf(), Color.parseColor() this is what you need to put...

This needs a String but you have the int color in the color file, so what to do?

Within Color.parseColor() pass getString(), this is a method that each activity has, so within getString() you put finally your color as this R.color.yourcolor

Solution 13:[13]

In Kotlin this way:

binding.fAB.iconTint= ColorStateList.valueOf(Color.parseColor("#3F51B5"))

Where binding is a root view and iconTint comes from Extended FAB.

Solution 14:[14]

just use this line in your xml file under floating action button

android:backgroundTint="#96989A"