在 XML 中的 MaterialButton 上设置完美的圆形圆角

Posted

技术标签:

【中文标题】在 XML 中的 MaterialButton 上设置完美的圆形圆角【英文标题】:Setting perfectly circular rounded corners on a MaterialButton in XML 【发布时间】:2020-10-20 04:56:14 【问题描述】:

所以我一直在尝试找到一种方法,使 Material Components 库中的 MaterialButton 具有完美的圆角。我的意思是实际上它们的角大小是按钮高度的 50%。

在某些documentation 中,它表明这应该可以通过下面的引用来实现。

可以使用绝对值或百分比值来确定形状大小。

我有几个可行的解决方案,首先测量视图并以这种方式设置角大小,但后来我发现ExtendedFloatingActionButton 使用RelativeCornerSize 对象。

但是,我仍然无法在 XML 中找到解决方案。

【问题讨论】:

【参考方案1】:

您可以使用 shapeAppearanceOverlay 属性。

<com.google.android.material.button.MaterialButton
    app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.Button.50"
    .../>

与:

  <style name="ShapeAppearanceOverlay.Button.50" parent="">
    <item name="cornerFamily">rounded</item>
    <item name="cornerSize">50%</item>
  </style>

您可以使用绝对值或百分比值。

【讨论】:

这很好用,谢谢,由于某种原因,它在布局预览中根本不显示,但在运行时有效,所以我认为我太快放弃了类似的解决方案! 如果它也可以帮助您投赞成票 ;)【参考方案2】:

Material Design 有特定的命令。

我无法比answer更好地解释它

它适用于 Android Studio 3.1 或更高版本

【讨论】:

感谢您的回答,但是我没有看到任何提及将角半径设置为百分比?他们似乎仍在使用硬编码值。 您使用的是 Kotlin 还是 Java? Kotlin,虽然我对两者都很满意! Kotlin 有自己的功能,我相信使用百分比。看看这个:developer.android.com/reference/kotlin/androidx/ui/foundation/…

以上是关于在 XML 中的 MaterialButton 上设置完美的圆形圆角的主要内容,如果未能解决你的问题,请参考以下文章

android material design 风格组件(MaterialButton,MaterialButtonToggleGroup,Chip,ChipGroup)大汇总.

可在 MaterialButton android 上绘制的选择器

更新到 Material 1.2.0 后,MaterialButton 上缺少角半径属性

Android MaterialButton使用详解,告别shapeselector

Android MaterialButton使用详解,告别shapeselector

Android iconGravity 不适用于具有 CircularProgressIndicator 的 MaterialButton