FloatingActionButton中的Android色调图标

时间:2015-08-17 10:11:42

标签: android floating-action-button tint

如何在FloatingActionButton中设置图标资源图像?我试过favoriteFab.setColorFilter(R.color.yellow, PorterDuff.Mode.OVERLAY);但没有成功。

7 个答案:

答案 0 :(得分:8)

我假设favoriteFab是你的FloatingActionButton。您可以使用:

int color = ContextCompat.getColor(this, R.color.yellow);
favoriteFab.getDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);

答案 1 :(得分:7)

如果您使用的是API 21或更高版本,可以像这样设置drawable的颜色色调。

mFAB.getDrawable()突变()setTint(getResources()的getColor(R.color.yourColor)。);

E.g。

{{1}}

更新:由于不推荐使用getColor,您应该使用ContextCompat。使用以下内容:

{{1}}

答案 2 :(得分:4)

您可以简单地使用support-v4中的DrawableCompat,如下所示:

    Drawable drawable = mFloatingActionButton.getDrawable();
    // Wrap the drawable so that future tinting calls work
    // on pre-v21 devices. Always use the returned drawable.
    drawable = DrawableCompat.wrap(drawable);

    // We can now set a tint
    DrawableCompat.setTint(drawable, ContextCompat.getColor(this, R.color.white));
    // ...or a tint list
    DrawableCompat.setTintList(drawable, ColorStateList.valueOf(ContextCompat.getColor(this, R.color.white)));

    // ...and a different tint mode
    DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_OVER);

答案 3 :(得分:3)

Drawable fabDr= mFAB.getDrawable();
DrawableCompat.setTint(fabDr, Color.WHITE);

答案 4 :(得分:2)

您可以改为使用DrawableCompat.setTintList()

Drawable drawable = DrawableCompat.wrap(fab.getDrawable());
DrawableCompat.setTint(drawable, myColorInt);
fab.setImageDrawable(drawable);

答案 5 :(得分:0)

在科特林或更美好

import androidx.core.graphics.drawable.DrawableCompat.setTint
import com.google.android.material.floatingactionbutton.FloatingActionButton

fun FloatingActionButton.iconTint(color: Int) = setTint(drawable, color)

答案 6 :(得分:0)

可以使用:

app:tint="#FFFF"       

示例:

<com.google.android.material.floatingactionbutton.FloatingActionButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|start"
            android:layout_margin="16dp"
            android:layout_marginEnd="8dp"
            android:layout_marginBottom="8dp"
            app:backgroundTint="@color/colorAccent"
            app:fabSize="normal"
            app:rippleColor="@color/colorPrimaryDark"
            app:tint="#FFFF"
            android:src="@drawable/ic_search_24dp"
          />