“材质按钮”,“材质文本按钮”和“材质轮廓按钮”的Android材质组件全局样式

时间:2020-05-01 12:45:14

标签: android android-layout material-design android-jetpack material-components-android

当前,我正在使用com.google.android.material:material:1.1.0库。

我创建了基本主题并添加了“材质按钮”全局样式,例如:<item name="materialButtonStyle">@style/Material.BaseAppTheme.Button</item>。它适用于所有默认按钮。现在的问题是我想要材料文本按钮材料轮廓按钮的特定样式。但是即使我在属性中添加了特定样式,默认样式也会覆盖特定样式。 喜欢这个:

 <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

1 个答案:

答案 0 :(得分:0)

我认为您在理解材料主题方面需要一些帮助。 首先将您的应用程序主题更改为 Material 主题将自动为您项目中的所有按钮设置主题(无需做任何额外的事情)。 二、可以使用

 style="@style/Widget.MaterialComponents.Button.TextButton"

在您的按钮代码中,使您的按钮纯文本按钮像预期的结果一样。

您可以在此处阅读此材料设计文档:material.io

文档真的会帮助你,相信我。