设置FAB图标颜色

时间:2015-06-29 10:52:10

标签: android floating-action-button

current fab
当前FAB

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

style.xml

global_dict

activity_main.xml中

load()

16 个答案:

答案 0 :(得分:175)

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

答案 1 :(得分: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);

答案 2 :(得分:17)

您必须更改app:tint才能起作用。 android:tint对我没有任何改变。

答案 3 :(得分:11)

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

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

myFab.setColorFilter(Color.WHITE);

答案 4 :(得分:7)

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

public static T SomeMethod<T, U>(U paramName) { return T; } 看起来像一个干净的解决方案,但不支持API级别21

使用位图增加了应用程序的复杂性,而不是尝试以编程方式更改现有图标的颜色。复杂性越低意味着要测试的东西越少:)

答案 5 :(得分:6)

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

ImageViewCompat.setImageTintList(
    floatingActionButton,
    ColorStateList.valueOf(Color.WHITE)
);

答案 6 :(得分:2)

如果您使用的是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"/>

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

答案 7 :(得分:2)

如果要更改 CollapsingToolbarLayout 中图标的颜色,请使用以下代码

app:tint="@color/white"

使用应用代替安卓

答案 8 :(得分:1)

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

答案 9 :(得分:0)

如果您正在使用材质FAB,则可以使用Kotlin中的以下代码以编程方式对其进行样式设置。

fab.supportImageTintList = ContextCompat.getColorStateList(context, R.color.fab_icon_tint)

答案 10 :(得分:0)

 <com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/add_loan"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/medium"
    android:layout_marginBottom="16dp"
    android:backgroundTint="@color/ci_blue"
    android:theme="@style/fabtheme"
    app:srcCompat="@drawable/ic_baseline_add_24"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1"
    app:layout_constraintStart_toStartOf="parent"
    app:rippleColor="@color/white" />

主题

<style name="fabtheme" parent="Widget.Design.FloatingActionButton">
    <item name="colorOnSecondary">@color/white</item>
</style>

使用属性

app:tint="@color/white"

答案 11 :(得分:0)

您可以自定义样式:

<style name="FloatingButton" parent="Widget.MaterialComponents.FloatingActionButton">
        <item name="colorSecondary">@color/red</item>
        <item name="colorOnSecondary">@color/white</item>
</style>

其中 colorSecondary 是背景,colorOnSecondary 是按钮的可绘制对象的颜色。

<com.google.android.material.floatingactionbutton.FloatingActionButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_phone"
            android:theme="@style/FloatingButton" />

答案 12 :(得分:0)

*.java file
private FloatingActionButton login;
login = findViewById(R.id.loginbtn);  
login.setColorFilter(android.R.color.white);
//-------------------------------------------//
.XML file**strong text**
<com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/loginbtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:backgroundTint="@color/colorPrimaryDark"
        android:src="@drawable/loginicon"
        app:rippleColor="@color/white"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pass_l" />*

答案 13 :(得分:0)

如果您使用的是 com.google.android.material.floatingactionbutton.FloatingActionButton

然后

  1. 要更改浮动操作按钮的背景颜色,请使用 app:backgroundTint

  2. 要更改浮动操作按钮的图标颜色,请使用 app:tint

  3. 要更改浮动操作按钮的Icon Drawable,请使用 app:srcCompat

     <com.google.android.material.floatingactionbutton.FloatingActionButton
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     app:backgroundTint="@color/white"
     app:srcCompat="@drawable/fb_icon"
     app:tint="@android:color/black" />
    

答案 14 :(得分:0)

试试这个代码

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

结果 enter image description here

答案 15 :(得分:0)

我以编程方式更改 FAB 图标颜色的解决方案是,此解决方案适用于 api 级别 21 以上

val fab = FloatingActionButton(requireContext())
 fab.apply {
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        imageTintList = ColorStateList.valueOf(Color.WHITE)
 }