以编程方式从Appcompat 22.2.0更改浮动操作按钮的颜色

时间:2015-06-21 15:31:45

标签: java android android-layout floating-action-button

我想知道如何更改支持库22.2.0中的浮动操作按钮颜色? 我试过了

button.setBackgroundColor(color);

但很明显,这会改变按钮的drawable,然后变成正方形。

现在我想知道如何更改颜色而不仅仅是颜色,而不会触及形状?

提前致谢

13 个答案:

答案 0 :(得分:34)

也许迟到但可以提供帮助。

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

并从颜色列表You can find here

中解析实际颜色代码

答案 1 :(得分:31)

创建ColorStateList并将其设置为背景色调:

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

答案 2 :(得分:11)

你必须使用

  • in XML with attribute app:backgroundTint
  • 在.setBackgroundTintList的代码中 阅读此答案

Android changing Floating Action Button color

答案 3 :(得分:10)

colors.xml(在这种情况下为R.color.purple)中创建颜色资源并使用它,如下所示:

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

答案 4 :(得分:9)

方法1:更改xml中的浮动操作栏(fab)颜色:

要更改浮动操作栏(fab)颜色,请按照此步骤进行操作

在xml的浮动操作栏(fab)中添加“app:backgroundTint =”#colorcode“”。例如

app:backgroundTint="#8393ca"
<#>在#8393ca的地方添加您想要的任何颜色代码

示例为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" />

方法2:以编程方式更改浮动操作栏颜色

只需在代码上添加此行

即可

首先在您的values =&gt;颜色中创建一个红色,然后在创建活动中添加此代码

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

                                or

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

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

答案 5 :(得分:7)

要向后兼容:

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

答案 6 :(得分:6)

在此处查看已接受的答案:Android changing Floating Action Button color

  

如果您想更改颜色

     
      
  • 在XML中,属性为 app:backgroundTint
  •   
  • .setBackgroundTintList
  • 的代码中   

答案 7 :(得分:1)

属性名称为backgroundTint

所以我认为这是一个名为

的函数

button.setBackgroundTint(color)

答案 8 :(得分:1)

如果您使用https://github.com/Clans/FloatingActionButton中的浮动操作按钮库,请使用此

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

答案 9 :(得分:1)

试试这段代码。它会为背景资源添加色调。

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

答案 10 :(得分:0)

只需在浮动操作按钮

下的xml文件中使用此行
android:backgroundTint="#96989A"

答案 11 :(得分:0)

XML background:tint颜色将始终覆盖您提供的任何颜色 以编程方式因此,要以编程方式提供颜色,请从XML文件中删除android:backgroundTint="#96989A"行,并使用:

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

答案 12 :(得分:0)

有时您将颜色保存在颜色文件中,并且想要使用该颜色。

此代码下方的内容

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

您知道要以编程方式进行更改,因此需要使用setBackgroundTintList(),然后传递所需的ColorStateList.valueOf(),然后将其转换为certein int并对其进行解析...

注意:如果您只是立即设置int颜色,有时可能会给您带来获取所需颜色的问题,因此,我不使用它,也不建议您那样使用它

然后将其放入ColorStateList.valueOf()Color.parseColor()中,这是您需要放入的...

这需要一个字符串,但您在颜色文件中具有int颜色,那么该怎么办?

Color.parseColor()传递getString()内,这是每个活动都具有的一种方法,因此在getString()内,您将最终的颜色设置为{{1 }