Значок кнопки Материал отображается без цвета

Я использую следующую кнопку материала:

<android.support.design.button.MaterialButton
            android:id="@+id/bFavourite"         style="@style/Widget.MaterialComponents.Button.UnelevatedButton.Icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:insetTop="0dp"
            android:insetBottom="0dp"
            android:textAllCaps="false"
            android:textSize="20sp"
            app:backgroundTint="@color/main_dark_blue"
            app:backgroundTintMode="src_over"
            app:cornerRadius="0dp"
            app:icon="@drawable/heart_filled"
            app:iconGravity="textStart"
            app:iconPadding="0dp" />

heart_filled это png красного сердца. Однако значок отображается без какого-либо цвета (например, белое сердце). Почему реальный цвет изображения не отображается? Спасибо

6 ответов

Решение

Вы можете попробовать установить iconTint атрибут кнопки:

app:iconTint="#ffffff"

Может быть, вы ищете этот набор iconTint на ноль

<com.google.android.material.button.MaterialButton
            android:id="@+id/btnGoogle"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:layout_marginStart="@dimen/_2sdp"
            android:layout_weight="1"
            app:icon="@drawable/ic_google"
            app:iconGravity="textStart"
            app:iconTint="@null"
            android:elevation="@dimen/_10sdp"
            android:text="@string/string_google"
            android:textAllCaps="false"
            app:rippleColor="@color/colorBlueShade1"
            app:cornerRadius="@dimen/_20sdp"
            app:backgroundTint="@color/colorWhite"
            android:textColor="@color/colorPrimary" />

Достигнутый результат

Я знаю, что слишком поздно, но это может быть полезно для других. Спасибо

Удачного кодирования:)

Просто нужно добавить режим оттенка в значок кнопки материала

app:iconTintMode="multiply"

Если ваш значок имеет несколько цветов, вам также придется применить TintMode.

  app:icon="@drawable/ic_delete"
  app:iconTint="#ffffff"
  app:iconTintMode="multiply"

Это даст вам идеальный дизайн иконок.

В app:icon окрашен app:iconTint цвет, заданный стилем по умолчанию (Widget.MaterialComponents.Button.UnelevatedButton.Icon в твоем случае).

Вы можете изменить это поведение, используя app:iconTint="@null" на вашу кнопку:

<com.google.android.material.button.MaterialButton
   style="@style/Widget.MaterialComponents.Button.UnelevatedButton.Icon"
   app:iconTint="@null" 
   .../>

Ты можешь использовать app:iconTint="@android:color/white" потому что они упоминают это в документах MaterialButton Docs

Другие вопросы по тегам