Почему к кнопке в 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>
Выглядит он так:
И вот самое интересное: по какой-то причине сама вторая кнопка окрашена не в красный!
Вот скриншот с телефона, когда я запускаю приложение:
Как это можно исправить?
Ответы (1 шт):
Скорее всего у вас material theme
, поэтому там инфлейтится MaterialButton
под капотом, а оно игнорирует android:background
если не добавить app:backgroundTint="@null"
(именно с app:
), но это скорее "хак".
Лучше не использовать android:background
для MaterialButton
, а использовать app:cornerRadius
(либо app:shapeAppearance
) для нужного закругления углов и app:backgroundTint
для смены цвета кнопки.