设置FAB图标颜色

Par*_*aub 53 android floating-action-button

目前的工厂
目前的FAB

我想知道如何将'com.android.support:design:22.2.0'库提供的FAB(浮动操作按钮)小部件的图标颜色从绿色更改为白色.

style.xml

<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/color_primary</item>
    <item name="colorPrimaryDark">@color/color_primary_dark</item>
    <item name="colorAccent">@color/accent</item>

</style>
<color name="color_primary">#00B33C</color>
<color name="color_primary_dark">#006622</color>
<color name="accent">#FFB366</color>
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <include android:id="@+id/toolbar" layout="@layout/toolbar" />

    <TextView android:id="@+id/text"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:paddingTop="16dp"
        android:textSize="20sp" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="8dp"
        android:paddingRight="8dp"
        android:paddingTop="8dp"
        android:paddingBottom="16dp" />

</LinearLayout>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end|bottom"
    android:src="@android:drawable/ic_input_add"
    android:layout_margin="24dp"
    app:elevation="6dp"
    app:pressedTranslationZ="12dp"
    app:borderWidth="0dp" />
Run Code Online (Sandbox Code Playgroud)

小智 183

使用android:tint属性可以设置这样的颜色

<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:tint="@android:color/white"
    android:src="@android:drawable/ic_input_add"
   />
Run Code Online (Sandbox Code Playgroud)

  • `android:tint`似乎仅在API级别21及以上版本中受支持:( https://developer.android.com/training/material/drawables.html (8认同)

Mir*_*zal 31

如果您正在使用 Material Components

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="16dp"
    android:layout_gravity="bottom|end"
    app:fabSize="normal"
    app:tint="@color/colorAccent"
    app:srcCompat="@drawable/ic_google"/>
Run Code Online (Sandbox Code Playgroud)

如果要使用图标默认颜色,请更改 app:tint="@null"

  • 我看了大约 30 分钟,直到我意识到它不应该是 `android:tint` 而是 `app:tint` 。 (28认同)
  • 使用`app:backgroundTint =“”`作为背景色,使用`app:tint =“”`作为图像色调。 (4认同)
  • 'app:tint="@null"' 拯救我的日子:) (2认同)

B. *_*ine 29

你必须改变app:tint它才能工作。android:tint没有为我做任何改变。


Gio*_*oli 21

您可以使用ColorFilter以编程方式更改它.

//get the drawable
Drawable myFabSrc = getResources().getDrawable(android.R.drawable.ic_input_add);
//copy it in a new one
Drawable willBeWhite = myFabSrc.getConstantState().newDrawable();
//set the color filter, you can use also Mode.SRC_ATOP
willBeWhite.mutate().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY);
//set it to your fab button initialized before
myFabName.setImageDrawable(willBeWhite);
Run Code Online (Sandbox Code Playgroud)

  • 你的解决方案太复杂了.只需使用android:tint ="@ android:color/white" (43认同)
  • 如果您使用“com.google.android.material”包中的“FloatingActionButton”,则应该添加“app:tint”而不是“android:tint”。 (28认同)
  • 它在设置`PorterDuff.Mode.SRC_ATOP`并使用`Drawable myFabSrc = ResourcesCompat.getDrawable(getResources(),android.R.drawable.ic_input_add,getTheme())时有效; (3认同)
  • 这并不复杂@MahdiElMasaoudi.有时候,大多数时候都有用例需要以编程方式进行更新!用户可以尽可能减少开销. (3认同)

Dan*_*res 12

它比获取drawable更容易,您只需要访问滤色器并将其设置为您想要的颜色.

FloatingActionButton myFab = (FloatingActionButton) findViewById(R.id.myfabid);

myFab.setColorFilter(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)


ale*_*ett 7

使用Google设计网站中的白色版ic_add.

android:tint 看起来像一个干净的解决方案,但它不支持API级别21

与尝试以编程方式更改现有图标的颜色相比,使用位图会增加应用程序的复杂性.复杂性越低意味着测试的东西越少:)

  • 在我看来好像`android:tint`适用于支持库中定义的`android.support.design.widget.FloatingActionButton`,即使在较低的API级别设备上,我刚刚在JellyBean映像上测试它(API 16) ). (3认同)

sfe*_*era 7

FloatingActionButton扩展以来,ImageView我们可以使用ImageViewCompat色调图标:

ImageViewCompat.setImageTintList(
    floatingActionButton,
    ColorStateList.valueOf(Color.WHITE)
);
Run Code Online (Sandbox Code Playgroud)


Zee*_*Ali 6

试试这个代码

    <com.google.android.material.floatingactionbutton.FloatingActionButton
       android:id="@+id/fab"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="bottom|end"
       android:backgroundTint="@color/sm_blue"
       app:tint="@color/white"
       android:layout_margin="@dimen/fab_margin"
       app:srcCompat="@android:drawable/ic_input_add" />
Run Code Online (Sandbox Code Playgroud)

结果 在此输入图像描述


小智 5

如果您使用的是材质 FAB,请使用 app:tint 来更改图标的颜色,而不是 android:tint