user2410644
user2410644

Reputation: 3891

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

Upvotes: 29

Views: 53464

Answers (14)

Mori
Mori

Reputation: 4651

In Kotlin this way:

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

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

Upvotes: 0

Bryan J. Diaz
Bryan J. Diaz

Reputation: 382

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

Upvotes: 0

Hemant Dhanuka
Hemant Dhanuka

Reputation: 35

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));

Upvotes: 1

Ankit Suda
Ankit Suda

Reputation: 138

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

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

Upvotes: 2

Ralph Pina
Ralph Pina

Reputation: 761

To do this backwards compatible:

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

Upvotes: 13

Makvin
Makvin

Reputation: 3629

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

android:backgroundTint="#96989A"

Upvotes: -1

Afjalur Rahman Rana
Afjalur Rahman Rana

Reputation: 813

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/

Upvotes: 9

Zuko
Zuko

Reputation: 2914

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

Upvotes: 41

Saeed Darvish
Saeed Darvish

Reputation: 631

you have to use

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

Android changing Floating Action Button color

Upvotes: 11

Maurice
Maurice

Reputation: 570

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));

Upvotes: 1

Louis CAD
Louis CAD

Reputation: 11527

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

Upvotes: 6

Adam Johns
Adam Johns

Reputation: 36373

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));

Upvotes: 11

tachyonflux
tachyonflux

Reputation: 20211

Create a ColorStateList and set it as the background tint:

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

Upvotes: 32

florent champigny
florent champigny

Reputation: 979

the attribute name is backgroundTint

so I thinks there's a function named

button.setBackgroundTint(color)

Upvotes: 1

Related Questions