如何将 Material Button ShapeAppearance 与 Edittext Shape Appearance 分开?
How to give Material Button ShapeAppearance seperate to Edittext Shape Appearance?
在 android 中,您可以使用 ShapeAppearance.MaterialComponents.SmallComponent
设置主题,所以如果我设置,
<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
变成圆形。
我的问题是,这也影响了我所有 Edittext
的 shapeAppearance
,这不是我想要的。
是否可以为 Button
提供不同的 shapeAppearance
并为 Edittext
提供不同的 shapeAppearance
?
您可以通过覆盖组件的样式并定义自定义 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>
在 android 中,您可以使用 ShapeAppearance.MaterialComponents.SmallComponent
设置主题,所以如果我设置,
<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
变成圆形。
我的问题是,这也影响了我所有 Edittext
的 shapeAppearance
,这不是我想要的。
是否可以为 Button
提供不同的 shapeAppearance
并为 Edittext
提供不同的 shapeAppearance
?
您可以通过覆盖组件的样式并定义自定义 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>