更改FloatingActionButton背景?

3

我正在尝试在XML中将FAB的背景颜色设置为不同的颜色。我知道我可以在代码中完成,但那也需要我进行许多不方便的重构。

<android.support.design.widget.FloatingActionButton
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:background="#F38E1B"
    android:id="@+id/fab"/>

enter image description here

由于某些原因,背景颜色应该是橙色,但实际上保持为蓝色。我已尝试将背景设置为可绘制对象,但结果相同。

这是一个 bug 还是我漏掉了什么?


1
你可以尝试使用官方文档中的 setBackgroundColor(int color) 方法:https://developer.android.com/reference/android/support/design/widget/FloatingActionButton.html - FlavienBert
@FlavienBert 我试过了,结果一样。而且正如我所说,通过代码实现这个需要进行大量的重构。 - Kevin Cronly
5个回答

4
我也尝试使用和您相同的方法,但得到了相同的结果。我的解决方案是:
<item name="colorAccent">@color/yourColor</item>

在我的应用程序主题中。

然而,这种颜色也将用于您所有的小部件中。

希望这可以帮助!


谢谢,但这是一个相当大的应用程序,所以我不认为那是一个选项。 - Kevin Cronly

3

我有同样的问题。这是我解决问题的方法:我只需为我的按钮创建一个新主题。

我的FAB xml:

<android.support.design.widget.FloatingActionButton
      ...
      android:theme="@style/MapButton"/>
中的我的新主题:
<style name="MapButton" parent="AppTheme">
        <item name="colorAccent">#FFFFFF</item></style>

我基于我的应用程序主题创建了一个新的主题,并仅更改了我想要的颜色。
希望对您有所帮助。

2

好的,我明白了。原来你确实需要将背景设置为可绘制对象(感谢@Nilesh),但是我设置的可绘制对象有问题。我使用了以下代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/al_color_accent_orange_light"/>
        </shape>
    </item>
</layer-list>

作为我的可绘制对象,它有效地工作了。

1
作为FloatingActionButton扩展了ImageView 请查看此链接 还要看第76行 他们将background作为drawable获取,而您正在设置color 所以我不认为您可以使用color更改它。
尝试将drawable设置为背景
请查看此链接第20行

1
在XML中
<android.support.design.widget.FloatingActionButton
    ...
    app:backgroundTint="@color/background_tint"
    android:src="@drawable/ic_add" />

在代码中
mFlaotsetBackgroundTintList(ColorStateList.valueOf(Color.Blue))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接