29

我想要带有白色背景和彩色图标的“使用 Google 登录”按钮,但是当我使用这个 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"/>

如何使图标不着色?

4

5 回答 5

51

我已经找到了解决方案,我只是更改了iconTintModeiconTint 颜色

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

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

于 2018-10-18T17:59:18.147 回答
35

使用此并退出色调图标以显示真实颜色

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

真彩色图标显示黑色背景

于 2019-02-13T19:57:43.237 回答
1

您还可以使用白色作为 iconTint 并将乘法作为 iconTintMode 使用彩色图标。

 app:iconTint="@color/white"
 app:iconTintMode="multiply"
于 2020-12-14T07:55:10.207 回答
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 不起作用,但这就是最终让那种愚蠢的颜色消失的原因。

于 2021-06-05T14:43:59.603 回答
0
button.iconTint = ColorStateList.valueOf(Color.TRANSPARENT)
于 2021-10-25T08:00:21.130 回答