Android Глобальный стиль компонента материала для кнопки «Материал», «Текстовая кнопка материала» и «OutlinedButton» - PullRequest
0 голосов
/ 01 мая 2020

В настоящее время я использую библиотеку 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" 
    ...> 

Тем не менее он отображается в качестве кнопки по умолчанию. Поэтому я должен удалить глобальный стиль кнопки в базовой теме и добавить стиль в каждый . Я не знаю, является ли это единственным способом применить стили к другому типу Материальных кнопок. Или я что-то упустил. Вот мой код темы и стилей

БАЗОВАЯ ТЕМА

enter image description here

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" />

Текущий результат

enter image description here

** Ожидаемый результат **

enter image description here

...