ForegroundTint переопределяет backgroundTint на кнопке?

Я работаю над приложением для Android, и мне нужна кнопка с фоном и передним планом, которая представляет собой несколько значков.

Я хочу установить для backgroundTint и foregroundTint разные цвета, потому что это понадобится, когда я буду писать селекторы для цветов.

Проблема в том, что когда я устанавливаю foregroundTint:

  1. foregroundTintMode=multiply - оттенок фона в порядке, но значок переднего плана не меняет свой цвет
  2. foregroundTintMode!=multiply - оттенок переднего плана в порядке, но значок фона меняет свой цвет на foregroundTint, а не на backgroundTint

Я перепробовал все комбинации foregroundTintMode и backgroundTintMode, но безрезультатно.

Вот мой тестовый файл:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="euroicc.testfb.MainActivity"
    android:background="@color/colorPrimary">

    <Button
        android:id="@+id/button"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:background="@drawable/icon_background"
        android:backgroundTint="@android:color/holo_blue_dark"
        android:foreground="@drawable/icon_settings"
        android:foregroundTint="@android:color/white"
        tools:layout_editor_absoluteX="105dp"
        tools:layout_editor_absoluteY="141dp" />

</RelativeLayout>

Примечание: изначально я работал с API уровня 17, но изменил его на 21. Я хотел бы, чтобы это приложение поддерживало как можно больше устройств.


person Invader Zim    schedule 17.11.2017    source источник


Ответы (1)


Не знаю, почему вы используете обычные Button и foreground, вместо этого используйте ImageButton:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/icon_settings"
    android:tint="@android:color/red"
    android:background="@drawable/icon_background"
    android:backgroundTint="@android:color/black"
    />
person patrick.elmquist    schedule 17.11.2017