В настоящее время я использую библиотеку com.google.android.material:material:1.1.0
.
Я создал базовую тему и добавил глобальный стиль кнопки материала, например: <item name="materialButtonStyle">@style/Material.BaseAppTheme.Button</item>
. Он применяется ко всем кнопкам по умолчанию. Теперь проблема заключается в том, что я хочу указать определенный стиль c для Материал Текст кнопки и Материал Контур кнопки . Но стиль по умолчанию переопределяет конкретный стиль c, даже если я добавляю конкретный стиль c в свойстве. Вот как:
<Button
style="@style/Widget.MaterialComponents.Button.TextButton"
...>
Тем не менее он отображается в качестве кнопки по умолчанию. Поэтому я должен удалить глобальный стиль кнопки в базовой теме и добавить стиль в каждый . Я не знаю, является ли это единственным способом применить стили к другому типу Материальных кнопок. Или я что-то упустил. Вот мой код темы и стилей
БАЗОВАЯ ТЕМА
BaseTheme.Button и TextAppearance Стиль
<style name="TextAppearance.Base.Button" parent="TextAppearance.MaterialComponents.Button">
<item name="android:fontFamily">@string/font_family_regular</item>
<item name="fontFamily">@string/font_family_regular</item>
<item name="android:textColor">?buttonTextColorPrimary</item>
<item name="android:textStyle">normal</item>
<item name="android:textSize">@dimen/_10sp</item>
<item name="android:textAllCaps">false</item>
</style>
<style name="Material.BaseAppTheme.Button" parent="Widget.MaterialComponents.Button">
<item name="android:paddingLeft">@dimen/_8dp</item>
<item name="android:paddingRight">@dimen/_8dp</item>
<item name="android:background">?buttonColorEnabled</item>
</style>
Кнопки в XML
<Button
style="@style/Widget.MaterialComponents.Button.TextButton"
android:id="@+id/tv_footer_cta_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:textAllCaps="true"
android:text="@{viewModel.footerLeftTitle}"
app:invisibility="@{viewModel.footerLeftCTAVisibility}"
app:onSingleClick="@{() -> viewModel.navigateTo(viewModel.footerLeftCTAUri)}"
tools:text="MANAGE ACCOUNT" />
<Button
android:id="@+id/tv_footer_cta_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="@{viewModel.footerRightTitle}"
android:textAllCaps="true"
app:invisibility="@{viewModel.footerRightCTAVisibility}"
app:onSingleClick="@{() -> viewModel.navigateTo(viewModel.footerRightCTAUri)}"
tools:text="MANAGE ACCOUNT" />
Текущий результат
** Ожидаемый результат **