材质设计组件按钮全局主题无效

时间:2019-05-24 16:50:26

标签: android material-design material-components

我想简单地将样式应用于这样的主题级别的所有按钮

<style name="BaseTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
     ...    
    <item name="buttonStyle">@style/DefaultButton</item>
</style>

<style name="DefaultButton" parent="Widget.MaterialComponents.Button">
    <item name="android:textColor">@color/whatever</item>
</style>

<Button
    android:id="@+id/addChannelButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|center_horizontal"
    android:layout_margin="16dp"
    android:text="Add room" />

"com.google.android.material:material:1.0.0"

为什么这行不通?会在appcompat中

//如果我使用Theme.MaterialComponents.Light.NoActionBar.Bridge,则可以使用

4 个答案:

答案 0 :(得分:0)

您应该在主题中设置materialButtonStyle而不是buttonStyle

答案 1 :(得分:0)

您可以尝试使用v1.0.0-alpha06吗?自v1.0.0以来取得了一些进展,可能已经解决了您所看到的问题。

1.1.0-alpha02

  • 形状主题:更新了FloatingActionButton,MaterialButton,Chip,MaterialCardView,BottomSheet和TextInputLayout以使用新的Material形状系统

1.1.0-alpha06

  • 在MaterialButton中实现可变形的界面

来源:https://github.com/material-components/material-components-android/releases

答案 2 :(得分:0)

使用materialButtonStyle并使用MaterialButton代替Button

答案 3 :(得分:0)

使用定义Theme.MaterialComponents属性的materialButtonStyle主题。

  <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.MaterialComponents.Light">
    ....

    <item name="materialButtonStyle">@style/MyButtonTheme</item>
  </style>

通过这种方式,您可以自定义应用中所有按钮的主题。
同样从材质库的1.1.0版本开始,您可以使用 materialThemeOverlay 属性从默认样式覆盖主题属性。

类似的东西:

  <style name="MyButtonTheme" parent="Widget.MaterialComponents.Button">
    <item name="materialThemeOverlay">@style/ButtonStyleTextColor</item>
  </style>

  <style name="ButtonStyleTextColor">
    <!-- For filled buttons, your theme's colorPrimary provides the default background color of the component, and -->
    <!--the text color is colorOnPrimary -->
    <item name="colorOnPrimary">@color/my_color</item>

  </style>

当前,它需要用于Android库的材料组件的版本 1.1.0