首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于材料按钮、材料文本按钮和材料OutlinedButton的安卓材料组件全局样式

用于材料按钮、材料文本按钮和材料OutlinedButton的安卓材料组件全局样式
EN

Stack Overflow用户
提问于 2020-05-01 12:45:14
回答 1查看 2.3K关注 0票数 2

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

我已经创建了基本主题,并添加了材料按钮全局样式,如:<item name="materialButtonStyle">@style/Material.BaseAppTheme.Button</item>。它适用于所有默认按钮。现在的问题是,我想要一个特定的风格材料,文本,按钮,材料概述按钮。但是,即使我在属性中添加了特定样式,默认样式也是覆盖特定样式的。像这样:

代码语言:javascript
复制
 <Button
    style="@style/Widget.MaterialComponents.Button.TextButton" 
    ...> 

它仍然显示为默认按钮。因此,我必须删除基本主题中的全局按钮样式,并在每个主题中添加样式。我不知道这是为不同类型的材料按钮应用样式的唯一方法吗?或者我遗漏了什么。这是我的主题和风格代码

基主题

BaseTheme.Button与TextAppearance Style

代码语言:javascript
复制
<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中的按钮

代码语言:javascript
复制
              <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" />

电流结果

**预期结果**

EN

回答 1

Stack Overflow用户

发布于 2021-01-23 13:56:12

我想你在理解材料主题方面需要一些帮助。首先,将应用程序主题更改为材料主题将自动将项目中的所有按钮作为主题(不需要做任何额外的事情)。第二,你可以用

代码语言:javascript
复制
 style="@style/Widget.MaterialComponents.Button.TextButton"

在您的按钮代码,使您的按钮文本,只有按钮一样,在预期的结果。

您可以在这里阅读有关材料设计的文档:material.io

相信我,纪录片会对你有帮助的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61542782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档