我想简单地将样式应用于这样的主题级别的所有按钮
<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,则可以使用
答案 0 :(得分:0)
您应该在主题中设置materialButtonStyle
而不是buttonStyle
。
答案 1 :(得分:0)
您可以尝试使用v1.0.0-alpha06吗?自v1.0.0以来取得了一些进展,可能已经解决了您所看到的问题。
来源: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 。