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

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

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

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


当前回答

正如Vasil Valchev在评论中指出的那样,它比看起来要简单,但是在我的XML中有一个我没有注意到的细微差别。

<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"
    app:backgroundTint="@android:color/white"/>

注意它是:

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

而不是

android:backgroundTint="@android:color/white"

其他回答

感谢自动完成功能。经过几次尝试,我很幸运:

    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    card_view:backgroundTint="@color/whicheverColorYouLike"

——或——(两者基本上是一样的)

    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:backgroundTint="@color/whicheverColorYouLike"

这在API Version 17和设计库23.1.0上为我工作。

如果您希望以编程方式更改颜色,则可以使用此代码

floating.setBackgroundTintList(getResources().getColorStateList(R.color.vermelho));

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

app:backgroundTint="@color/blue"

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

android:tint="@color/white"     

对于材质设计,我只是改变了浮动动作按钮的颜色,就像这样, 在浮动动作按钮xml中添加以下两行。 和完成,

 android:backgroundTint="@color/colorPrimaryDark"
 app:borderWidth="0dp"

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