如何更改浮动按钮的颜色?

时间:2018-07-03 10:33:05

标签: android floating-action-button

fab.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(PrivateDealActivity.this, R.color.colorWhite)));

这不起作用。如何更改浮动按钮的背景颜色

7 个答案:

答案 0 :(得分:1)

您的代码是完全正确的。我还以类似的方式编写了用于以编程方式更改浮动操作按钮 的背景色。只需检查您的xml代码一次。 我的XML代码:

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentBottom="true"
    app:borderWidth="0dp"
    android:id="@+id/fab"
    android:layout_margin="16dp"
    app:elevation="8dp"/>

请记住,保持borderWidth="0dp"很重要。 现在,在Java代码中:

fab = view.findViewById(R.id.fab);
fab.setBackgroundTintList(ColorStateList.valueOf(required_color));

在这里您可以使用Color.parseColor()ContextCompat.getColor()替换 required_color

答案 1 :(得分:0)

一个简单的解决方案是更改默认的colorAccent。

Android Developers-FloatingActionButton中所述:

  

此视图的背景色默认为主题的colorAccent。如果希望在运行时更改此设置,则可以通过setBackgroundTintList(ColorStateList)进行更改。

如果无法更改颜色强调,则考虑到项目的要求,但是您需要以编程方式实施此代码,因此可以发布代码,我很乐意更新我的答案。

答案 2 :(得分:0)

您可以使用以下代码更改背景色:

child_var = 'child1'
qs = getattr(ParentModelInstance, child_var+'_set').all()

答案 3 :(得分:0)

请尝试这个。

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

答案 4 :(得分:0)

您可以使用

app:backgroundTint="@color/colorAccent"

如下所示

<android.support.design.widget.FloatingActionButton
        android:id="@+id/add_student_house"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:backgroundTint="@color/colorAccent"
        android:src="@drawable/ic_house_add"/>

请注意,它是 app:backgroundTint 而不是 android:backgroundTint

您也可以通过添加样式来做到这一点:

<style name="AppTheme.FloatingActionButton" >
        <item name="colorAccent">@color/colorAccent</item>
</style>

并在浮动操作按钮中将此样式作为主题,如下所示:

android:theme="@style/AppTheme.FloatingActionButton"

<android.support.design.widget.FloatingActionButton
    android:id="@+id/add_student_house"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.FloatingActionButton"
    android:src="@drawable/ic_house_add"/>

答案 5 :(得分:0)

只需使用此属性:

android:backgroundTint="@color/yourColor"

答案 6 :(得分:0)

默认使用材料成分 FloatingActionButtonmaterial theme,它使用具有属性 colorSecondary 的颜色。

要更改此颜色,您可以使用其他选项:

  • 您可以在xml中使用 app:backgroundTint 属性:
<com.google.android.material.floatingactionbutton.FloatingActionButton
       ...
       app:backgroundTint=".." />
  • 您可以使用 <item name="backgroundTint"> 属性
  • 使用自定义样式
  <!--<item name="floatingActionButtonStyle">@style/Widget.MaterialComponents.FloatingActionButton</item> -->
  <style name="MyFloatingActionButton" parent="@style/Widget.MaterialComponents.FloatingActionButton">
    <item name="backgroundTint">....</item>
  </style>
  • 从材料组件的版本 1.1.0 开始,您还可以使用新的 materialThemeOverlay 属性来仅覆盖默认颜色colorSecondary组件:
  <style name="MyFloatingActionButton" parent="@style/Widget.MaterialComponents.FloatingActionButton">
    <item name="materialThemeOverlay">@style/MyFabOverlay</item>
  </style>

  <style name="MyFabOverlay">
    <item name="colorSecondary">@color/custom2</item>
  </style>