Почему к кнопке в Android не применяются стили?

Пишу приложение на Android, использую Java.

У меня есть 2 кнопки на странице:

  • 1-я начинает поиск устройств рядом
  • 2-я отключается от устройства, к которому подключен телефон.

Делаю стилизацию кнопок, и возникла проблема: 1-я кнопка хорошо работает, все стили на ней видны, а вот со 2-й возникли проблемы.

Вот так выглядит экран приложения:

Экран приложения

2-я кнопка должна быть красной и должна сохранить свою форму.

Вот разметка первой кнопки, с которой всё хорошо:

<Button
    android:id="@+id/searchButton"
    style="@style/text"
    android:layout_width="228dp"
    android:layout_height="42dp"
    android:layout_gravity="center"
    android:background="@drawable/standart_button"
    android:backgroundTint="@null"
    android:onClick="searchDevicesClickButton"
    android:text="@string/search"
    android:textColor="@color/white" />

Вот xml-разметка второй кнопки:

<Button
    android:id="@+id/closeConnectionButton"
    style="@style/text"
    android:layout_width="228dp"
    android:layout_height="56dp"
    android:layout_gravity="center"
    android:layout_marginTop="10dp"
    android:background="@drawable/close_button"
    android:onClick="searchDevicesClickButton"
    android:text="@string/turn_off_bluetooth_connection"
    android:textColor="@color/white" />

Вот стиль text:

<style name="text">
    <item name="fontFamily">@font/montserrat_medium</item>
</style>

Вот background второй кнопки:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="228dp"
    android:height="42dp"
    android:viewportWidth="228"
    android:viewportHeight="42">
  <path
      android:pathData="M10,0L217,0A10,10 0,0 1,227 10L227,32A10,10 0,0 1,217 42L10,42A10,10 0,0 1,0 32L0,10A10,10 0,0 1,10 0z"
      android:fillColor="@color/red"/>
</vector>

Выглядит он так:

Background второй кнопки


И вот самое интересное: по какой-то причине сама вторая кнопка окрашена не в красный!

Вот скриншот с телефона, когда я запускаю приложение:

Скрин запущенного приложения

Как это можно исправить?


Ответы (1 шт):

Автор решения: IR42

Скорее всего у вас material theme, поэтому там инфлейтится MaterialButton под капотом, а оно игнорирует android:background если не добавить app:backgroundTint="@null" (именно с app:), но это скорее "хак".

Лучше не использовать android:background для MaterialButton, а использовать app:cornerRadius (либо app:shapeAppearance) для нужного закругления углов и app:backgroundTint для смены цвета кнопки.

→ Ссылка