FAB更改图标drawable的颜色

时间:2018-01-02 12:29:29

标签: android floating-action-button

我已在布局文件中将我的FAB定义为:

<a href="xxx" class="btn btn-default">text</a>

此处<android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/search" app:rippleColor="@color/primary" app:elevation="1dp" app:borderWidth="4dp" /> 是我从Android Studio的矢量资产工具(资产类型素材图标)创建的文件。它被创建为黑色。如何更改FAB定义中使用的图标的颜色?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

只需更改drawable的颜色,找到res/drawable文件夹并打开所需的drawable代码,

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="26dp"
        android:height="26dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#FFFFFF" <!-- change color here -->
        android:pathData="M12,17.27L18.18,21l-1.64,-7.03L22,9.24l-7.19,-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21z"/>
</vector>

您可以在此处使用drawable属性更改android:fillColor的颜色。

修改 - 或者如果您想更改fab xml中可绘制图标的颜色,那么您可以在fab中使用android:tint

<android.support.design.widget.FloatingActionButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:tint="#FFFFFF"          <!-- your color here -->
    app:src="@drawable/ic_search" />