3

ShapeAppearance.MaterialComponents.SmallComponent在android中,如果我设置,你可以设置一个主题,

<style name="Some.Theme" parent="@style/Theme.MaterialComponents.DayNight.NoActionBar">
    ...
    <item name="shapeAppearanceSmallComponent">@style/ShapeAppearance.MyShape.SmallComponent</item>
    ...
</style>

如果我这样定义ShapeAppearance.MyShape.SmallComponent为四舍五入:

<style name="ShapeAppearance.MyShape.SmallComponent" parent="ShapeAppearance.MaterialComponents.SmallComponent">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">@dimen/someDPValue</item>
</style>

我可以得到MaterialButton一个圆形的形状。

我的问题是,这也影响了shapeAppearance我所有的人,Edittext这不是我想要的。

是否可以提供不同shapeAppearance的 forButton和不同的 for Edittext

4

1 回答 1

1

您可以通过覆盖组件的样式并定义自定义来更改组件的形状shapeAppearanceOverlay

例如,对于 MaterialButton,您可以materialButtonStyle在应用主题中使用该属性:

<style name="Some.Theme" parent="@style/Theme.MaterialComponents.DayNight.NoActionBar">
   <item name="materialButtonStyle">@style/MyApp.Button</item>
</style>

在哪里:

<style name="MyApp.Button" parent="@style/Widget.MaterialComponents.Button">
   <item name="shapeAppearanceOverlay">@style/ShapeAppearanceOverlay.MyApp.MaterialButton</item>
</style>

<style name="ShapeAppearanceOverlay.MyApp.MaterialButton" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">@dimen/...</item>
</style>
于 2020-01-15T14:08:04.540 回答