我一直试图改变材质的浮动动作按钮的颜色,但没有成功。

<android.support.design.widget.FloatingActionButton
    android:id="@+id/profile_edit_fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end|bottom"
    android:layout_margin="16dp"
    android:clickable="true"
    android:src="@drawable/ic_mode_edit_white_24dp" />

我试着补充:

android:background="@color/mycolor"

或者通过代码:

FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.profile_edit_fab);
fab.setBackgroundColor(Color.parseColor("#mycolor"));

or

fab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#mycolor")));

但上述方法都不起作用。我也尝试了提出的重复问题的解决方案,但没有一个可行;按钮仍然是绿色的,也变成了一个正方形。

附:如果知道如何增加连锁反应也很好,我也不明白。


当前回答

使用下面的线条改变浮动动作按钮的背景颜色

app:backgroundTint="@color/blue"

改变浮动动作按钮图标的颜色

android:tint="@color/white"     

其他回答

如果你尝试用app改变FAB的颜色,会有一些问题。 按钮的边框有不同的颜色,所以你必须做什么:

app:backgroundTint="@android:color/transparent"

并在代码中设置颜色:

actionButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(R.color.white)));

我是这样做的 android:背景= " @color / colorAccent” 我只需要到文件夹res,然后点击文件夹values,然后在colors。xml中点击colors。xml,我只需要改变colorAccent的颜色并在android:background中调用它,它就完成了

Vijet Badigannavar的答案是正确的,但使用ColorStateList通常是复杂的,他没有告诉我们如何做到这一点。由于我们经常关注在正常和按下状态下改变视图的颜色,我将添加更多细节:

If you want to change FAB's color in normal state, you can just write mFab.setBackgroundTintList(ColorStateList.valueOf(your color in int)); If you want to change FAB's color in pressed state, thanks for Design Support Library 22.2.1, you can just write mFab.setRippleColor(your color in int); By setting this attribute, when you long-pressed the FAB, a ripple with your color will appear at your touch point and reveal into whole surface of FAB. Please notice that it won't change FAB's color in normal state. Below API 21(Lollipop), there is no ripple effect but FAB's color will still change when you're pressing it.

最后,如果你想为状态实现更复杂的效果,那么你应该深入研究ColorStateList,这里有一个SO问题讨论它:我如何以编程方式创建ColorStateList ?

更新: 谢谢@Kaitlyn的评论。要删除FAB的笔画使用backgroundTint作为它的颜色,你可以设置app:borderWidth="0dp"在你的xml。

我们忽略的一点是,在你设置按钮的颜色之前,重要的是要为这个颜色设置你想要的值。你可以到values > color。您将找到默认的颜色,但您也可以通过复制和粘贴它们来创建颜色,更改颜色和名称。然后……当您要更改浮动按钮(在activity_main中)的颜色时,您可以选择已经创建的那个按钮

示例-代码的值>颜色默认颜色+ 3个我已经创建的颜色:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>

    <color name="corBotaoFoto">#f52411</color>
    <color name="corPar">#8e8f93</color>
    <color name="corImpar">#494848</color>

</resources>

现在我的浮动动作按钮,颜色我已经创建并命名为corPar:

<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"
        android:src="@android:drawable/ic_input_add"
        android:tint="#ffffff"
        app:backgroundTint="@color/corPar"/>

这对我很管用。好运!

在color.xml文件中添加颜色,然后添加这行代码… floatingActionButton.setBackgroundTintList (ColorStateList.valueOf (getresource () .getColor (R.color.fab2_color)));