Reputation: 3891
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
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
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
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
Reputation: 138
Try this code. It will add a tint to the background resource.
button.setBackgroundTintList(getResources().getColorStateList(R.color.yourColor));
Upvotes: 2
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
Reputation: 3629
just use this line in your xml file under floating action button
android:backgroundTint="#96989A"
Upvotes: -1
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
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
Reputation: 631
you have to use
attribute app:backgroundTint
Android changing Floating Action Button color
Upvotes: 11
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
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
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
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
Reputation: 979
the attribute name is backgroundTint
so I thinks there's a function named
button.setBackgroundTint(color)
Upvotes: 1