目前我正在使用com.google.android.material:material:1.1.0库。
我已经创建了基本主题,并添加了材料按钮全局样式,如:<item name="materialButtonStyle">@style/Material.BaseAppTheme.Button</item>。它适用于所有默认按钮。现在的问题是,我想要一个特定的风格材料,文本,按钮,和材料概述按钮。但是,即使我在属性中添加了特定样式,默认样式也是覆盖特定样式的。像这样:
<Button
style="@style/Widget.MaterialComponents.Button.TextButton"
...> 它仍然显示为默认按钮。因此,我必须删除基本主题中的全局按钮样式,并在每个主题中添加样式。我不知道这是为不同类型的材料按钮应用样式的唯一方法吗?或者我遗漏了什么。这是我的主题和风格代码
基主题

BaseTheme.Button与TextAppearance Style
<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" />电流结果

**预期结果**

发布于 2021-01-23 13:56:12
我想你在理解材料主题方面需要一些帮助。首先,将应用程序主题更改为材料主题将自动将项目中的所有按钮作为主题(不需要做任何额外的事情)。第二,你可以用
style="@style/Widget.MaterialComponents.Button.TextButton"在您的按钮代码,使您的按钮文本,只有按钮一样,在预期的结果。
您可以在这里阅读有关材料设计的文档:material.io
相信我,纪录片会对你有帮助的。
https://stackoverflow.com/questions/61542782
复制相似问题