当前,我正在使用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 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" />
当前结果
**预期结果**
答案 0 :(得分:0)
我认为您在理解材料主题方面需要一些帮助。 首先将您的应用程序主题更改为 Material 主题将自动为您项目中的所有按钮设置主题(无需做任何额外的事情)。 二、可以使用
style="@style/Widget.MaterialComponents.Button.TextButton"
在您的按钮代码中,使您的按钮纯文本按钮像预期的结果一样。
您可以在此处阅读此材料设计文档:material.io
文档真的会帮助你,相信我。