如何将材质按钮形状外观与编辑文本形状外观分开?



在安卓中,你可以用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变成圆形。

我的问题是,这也会影响我所有EdittextshapeAppearance,这不是我想要的。

是否可以为Button提供不同的shapeAppearance,为Edittext提供不同的?

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

例如,对于材质按钮,您可以在应用程序主题中使用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>

相关内容

  • 没有找到相关文章

最新更新