如何在Material Button中去除图标上的色调?

33

我想要一个带有白色背景和彩色图标的“使用Google登录”按钮,但当我使用这个图标时,它总是变色。

  <android.support.design.button.MaterialButton
    style="@style/Widget.MaterialComponents.Button.Icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sign in with Google"
    app:icon="@drawable/ic_google_colored"/>

如何使图标不变色?

5个回答

55

我已经找到了解决方案,我只是修改了iconTintMode和图标颜色。

  <android.support.design.button.MaterialButton
    style="@style/Widget.MaterialComponents.Button.Icon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sign in with Google"
    app:icon="@drawable/ic_google_colored"
    app:iconTint="@android:color/transparent"
    app:iconTintMode="add"/>

我愿意接受更好的解决方案


45
使用此“使用真实颜色”图标,以显示真实的颜色。
  app:icon="@drawable/ic_google"
  app:iconTint="@null"

例子

<Button
  android:id="@+id/idGoogle"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  app:icon="@drawable/ic_google"
  app:iconTint="@null"/>

图标真实颜色显示黑色背景


1
已接受的答案在OutlinedButton上不起作用。这个解决方案同样适用于OutlinedButton。 - Ishaan Garg

1
你也可以使用白色作为iconTint,并使用multiply作为iconTintMode来呈现多彩的图标。
 app:iconTint="@color/white"
 app:iconTintMode="multiply"

0

这些答案都对我没用。但是经过很多尝试,我发现这个方法管用。

<Button
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:scaleType="fitCenter"
    android:background="#0000"
    android:foreground="@android:drawable/ic_menu_camera"
    />

看起来关键是 android:background="#0000"。不知道为什么 @null 不起作用,但这最终让那个愚蠢的颜色消失了。


-1
button.iconTint = ColorStateList.valueOf(Color.TRANSPARENT)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接