设置FAB图标颜色

目前的工厂
目前的FAB

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

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> 

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" /> 

Solutions Collecting From Web of "设置FAB图标颜色"

您可以使用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); 

使用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" /> 

使用谷歌devise网站的ic_add白色版本。

android:tint看起来像一个干净的解决scheme,但在API级别21以下不受支持

使用位图与尝试以编程方式更改现有图标的颜色相比,可降低应用程序的复杂性。 复杂度较低意味着要testing的东西更less

这比获得可绘图要容易得多,你只需要访问颜色filter并将其设置为你想要的颜色即可。

 FloatingActionButton myFab = (FloatingActionButton) findViewById(R.id.myfabid); myFab.setColorFilter(Color.WHITE);