'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
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"
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow