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

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

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

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


当前回答

mFab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(mContext,R.color.mColor)));

其他回答

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

    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上为我工作。

我们忽略的一点是,在你设置按钮的颜色之前,重要的是要为这个颜色设置你想要的值。你可以到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"/>

这对我很管用。好运!

如文档中所述,默认情况下,它接受styles.xml属性colorAccent中的颜色集。

此视图的背景颜色默认为主题的colorAccent。如果你想在运行时改变这个,那么你可以通过setBackgroundTintList(ColorStateList)这样做。

如果你想改变颜色

在XML中带有属性app:backgroundTint

<android.support.design.widget.FloatingActionButton
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_add"
    app:backgroundTint="@color/orange"
    app:borderWidth="0dp"
    app:elevation="6dp"
    app:fabSize="normal" >

在代码中用.setBackgroundTintList(答案由ywwynm提供)

正如@Dantalian在评论中提到的,如果你想改变设计支持库v22(包括)的图标颜色,你可以使用

android:tint="@color/white"     

对于自v23以来的设计支持库,您可以使用:

app:tint="@color/white"   

androidX库也需要在你的xml布局中设置一个0dp边界:

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_add"
    app:backgroundTint="@color/orange"
    app:borderWidth="0dp"
    app:elevation="6dp"
    app:fabSize="normal" />

材质1.1.0中浮动动作按钮的新主题属性映射

在你的应用主题中:

设置colorSecondary为FAB设置背景颜色(映射到backgroundTint) 设置colorOnSecondary为图标/文本和FAB的波纹色设置颜色(映射到tint和rippleColor)


<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
    <!-- ...whatever else you declare in your app theme.. -->
    <!-- Set colorSecondary to change background of FAB (backgroundTint) -->
    <item name="colorSecondary">@color/colorSecondary</item>
    <!-- Customize colorSecondary to change icon/text of FAB (maps to tint and rippleColor) -->
    <item name="colorOnSecondary">@android:color/white</item>
</style>

正如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"